elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  [Threads] wait() y notify()
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] Ir Abajo Respuesta Imprimir
Autor Tema: [Threads] wait() y notify()  (Leído 6,686 veces)
klaine

Desconectado Desconectado

Mensajes: 112



Ver Perfil WWW
Re: [Threads] wait() y notify()
« Respuesta #10 en: 22 Junio 2011, 08:00 am »

De partida no es lo mismo agregar un nombre a un Thread que una variable identificadora o un contador o un valor booleano, etc... si vas a responder mi ultima pregunta te lo agradecere, pero lo que dices no tiene absolutamente nada que ver, y el codigo que pusiste si suelta error en tiempo de ejecucion por que no existe tal variable en la clase Thread, aunke pensandolo nisikiera es necesario hacer ese cast... y no me mandes a leer tutoriales por algo tan basico como pasar un argumento a la superclase, si no viste estoi preguntando otra cosa...

Saludos  ;)


En línea

Valkyr


Desconectado Desconectado

Mensajes: 646


Divide y vencerás


Ver Perfil
Re: [Threads] wait() y notify()
« Respuesta #11 en: 22 Junio 2011, 14:10 pm »

De partida no es lo mismo agregar un nombre a un Thread que una variable identificadora o un contador o un valor booleano, etc... si vas a responder mi ultima pregunta te lo agradecere, pero lo que dices no tiene absolutamente nada que ver, y el codigo que pusiste si suelta error en tiempo de ejecucion por que no existe tal variable en la clase Thread, aunke pensandolo nisikiera es necesario hacer ese cast... y no me mandes a leer tutoriales por algo tan basico como pasar un argumento a la superclase, si no viste estoi preguntando otra cosa...

Saludos  ;)

Vamos a ver, porque no estamos confundiendo. Si pongo este código en vez del anterior (el cual también compila y funciona perfectamente):

Código
  1. public class HiloSumador extends Thread {
  2.  
  3. private String identificador;
  4. private int cantidad;
  5.  
  6. public HiloSumador(String id) {
  7. super(id);
  8. identificador = id;
  9. cantidad = 0;
  10. }
  11.  
  12. public void run() {
  13. for (int i = 0; i < 20; i++)
  14. cantidad++;
  15. System.out.println("La suma es: " + cantidad);
  16. System.out.println(identificador);
  17. System.out.println(getName());
  18. }
  19.  
  20. public static void main(String[] args) {
  21. Thread hilo1 = new HiloSumador("Hilo1");
  22. hilo1.start();
  23. }
  24.  
  25. }
  26.  

La salida por pantalla es:

Código:
La suma es: 20
Hilo1
Hilo1

Así que es lo mismo ponerle el nombre, que añadir una variable llamada "identificador" para llamar al hilo de alguna forma. ¿Qué no existe la variable y suelta error en tiempo de ejecución? Te vuelvo a decir que mires más cosas de Java, ¿como no va a existir una variable que te declaras como atributo de tu clase? Existen las dos, identificador y cantidad, porque las he declarado. Aunque haya herencia, yo estoy añadiendo los atributos que yo necesito para que mi hilo funcione. Así que no entiendo de donde te has sacado que falla en tiempo de ejecución por un lado, y que no existe esa variable por otro.

No se a que te refieres con eso de cast, si te refieres a "casting" yo no veo ninguno en el código así que...será otra cosa a lo que te refieres.

Por último ya te he respondido a tu pregunta:
Heredando en runnable de Thread e implementando Runnable, hay otra forma?

Se puede hacer como te he mostrado en este código y en el anterior (que es la misma forma). No tiene sentido (y que me corrijan por favor si me equivoco alguien que lea esto) heredar de Thread, e implementar la interfaz Runnable, ya que si te vas y miras un poco la documentación de Thread: http://download.oracle.com/javase/6/docs/api/java/lang/Thread.html verás que pone "All implemented interfaces: Runnable".

Siendo más sencillo, a tu pregunta respondo: Sí, se puede hacer de dos formas. Heredando de Thread e implmentando el método run(). O implementando la interfaz Runnable e implementando el método Run.

Saludos  ;)


En línea

klaine

Desconectado Desconectado

Mensajes: 112



Ver Perfil WWW
Re: [Threads] wait() y notify()
« Respuesta #12 en: 23 Junio 2011, 01:31 am »

Pensansolo bien funciona, pero no instanciandolo de la forma que dijiste, por eso me confundí

Thread t=new HiloSumador();

Al mostrar t.identificador (habiendolo cambiado a public) muestra, no existe la variable identificador en java.lang.Thread XP

Bueno, gracias de todos modos, saludos
En línea

Valkyr


Desconectado Desconectado

Mensajes: 646


Divide y vencerás


Ver Perfil
Re: [Threads] wait() y notify()
« Respuesta #13 en: 23 Junio 2011, 02:47 am »

No he probado eso que dices de ponerlo a public y mostrarlo así, pero vamos, eso es una tontería porque si quieres acceder a algún atributo de la clase, declaras su método get y punto. Además, es lógico que falle porque cuando intentas acceder a un atributo de clase directamente se hace por su parte estática y no dinámica, y evidentemente la clase Thread no tiene un atributo llamado identificador. Asíais si lo que quieres hacer es poner atributos a public esta forma fallaría, pero vamos, en el 99,9% de los casos se recomienda declaralos privare.

Además, todo lo que he intentado explicaste ha sido lo que he aprendido en una asignatura de programación concurrente y distribuida, azoque puedo asegurarte que esta bien.

Saludos
En línea

Páginas: 1 [2] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Notify Icon
.NET (C#, VB.NET, ASP)
T_O_N_N_Y 2 2,387 Último mensaje 24 Junio 2006, 21:34 pm
por T_O_N_N_Y
Timer And Inet Help (Emergency) Wait for vb gurus
Programación Visual Basic
odesa 7 1,396 Último mensaje 23 Octubre 2008, 02:08 am
por odesa
wait() en c++ (windows)
Programación C/C++
soyloqbuskas 9 9,428 Último mensaje 22 Diciembre 2011, 12:41 pm
por BlackZeroX (Astaroth)
notify-send y init.d
GNU/Linux
patilanz 3 1,298 Último mensaje 22 Junio 2015, 14:03 pm
por daryo
duda con wait() y notify()
Java
m@o_614 0 1,018 Último mensaje 12 Septiembre 2015, 01:13 am
por m@o_614
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines