threads thread implement example entre ejemplo diferencia java android multithreading runnable

thread - runnable java 8



¿Hay alguna forma de pasar parámetros a Runnable? (5)

Esta pregunta ya tiene una respuesta aquí:

Tengo un hilo que usa un controlador para publicar una instancia ejecutable. funciona bien, pero tengo curiosidad acerca de cómo pasaría los parámetros para usarlos en la instancia de Runnable. Quizás no entiendo cómo funciona esta característica.

Para adelantarse a la pregunta "¿por qué necesita esto?", Tengo una animación enhebrada que tiene que volver a llamar al hilo de la interfaz de usuario para decirle qué dibujar realmente.


Aunque puede usar cualquiera de las respuestas anteriores, pero si la pregunta está realmente preocupada por Android, también puede usar AsyncTask.


Creo que encontré un enfoque más simple:

public interface MyRunnable extends Runnable { public void run(int data); } public void someMethod(int n, String s, MyRunnable r) { ... r.run(n); ... }

la llamada:

someMethod(5, "Hello", new MyRunnable() { @Override public void run(int data) { // TODO Auto-generated method stub } @Override public void run() { // TODO Auto-generated method stub } });


Hay varias formas de hacerlo, pero la más fácil es la siguiente:

final int param1 = value1; final int param2 = value2; ... new Runnable() { public void run() { // use param1 and param2 here } }


Si necesita comunicar información en un Runnable , siempre puede hacer que el constructor del objeto Runnable tome esta información, o podría tener otros métodos en el Runnable que le permitan obtener esta información, o (si el Runnable es una clase interna anónima) podría declarar los valores apropiados final para que Runnable pueda acceder a ellos.

¡Espero que esto ayude!


Simplemente puede hacer una clase que implemente Runnable con el constructor que acepte el parámetro,

public class MyRunnable implements Runnable { private Data data; public MyRunnable(Data _data) { this.data = _data; } @override public void run() { ... } }

Simplemente puede crear una instancia de la clase Runnable con constructor parametrizado.

MyRunnable obj = new MyRunnable(data); handler.post(obj);