Solución:
Debe pasar el parámetro en el constructor al objeto Runnable:
public class MyRunnable implements Runnable {
public MyRunnable(Object parameter) {
// store parameter for later user
}
public void run() {
}
}
e invocarlo así:
Runnable r = new MyRunnable(param_value);
new Thread(r).start();
Para clases anónimas:
En respuesta a las ediciones de preguntas, aquí es cómo funciona para las clases anónimas
final X parameter = ...; // the final is important
Thread t = new Thread(new Runnable() {
p = parameter;
public void run() {
...
};
t.start();
Clases nombradas:
Tiene una clase que extiende Thread (o implementa Runnable) y un constructor con los parámetros que le gustaría pasar. Luego, cuando crea el nuevo hilo, debe pasar los argumentos y luego iniciar el hilo, algo como esto:
Thread t = new MyThread(args...);
t.start();
Runnable es una solución mucho mejor que Thread BTW. Entonces prefiero:
public class MyRunnable implements Runnable {
private X parameter;
public MyRunnable(X parameter) {
this.parameter = parameter;
}
public void run() {
}
}
Thread t = new Thread(new MyRunnable(parameter));
t.start();
Esta respuesta es básicamente la misma que esta pregunta similar: Cómo pasar parámetros a un objeto Thread
a través del constructor de una clase Runnable o Thread
class MyThread extends Thread {
private String to;
public MyThread(String to) {
this.to = to;
}
@Override
public void run() {
System.out.println("hello " + to);
}
}
public static void main(String[] args) {
new MyThread("world!").start();
}
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)