Saltar al contenido

¿Cómo llamar a un método con un hilo separado en Java?

Si hallas algún error con tu código o trabajo, recuerda probar siempre en un entorno de testing antes añadir el código al proyecto final.

Solución:

Thread t1 = new Thread(new Runnable() 
    @Override
    public void run() 
        // code goes here.
    
);  
t1.start();

o

new Thread(new Runnable() 
     @Override
     public void run() 
          // code goes here.
     
).start();

o

new Thread(() -> 
    // code goes here.
).start();

o

Executors.newSingleThreadExecutor().execute(new Runnable() 
    @Override
    public void run() 
        myCustomMethod();
    
);

o

Executors.newCachedThreadPool().execute(new Runnable() 
    @Override
    public void run() 
        myCustomMethod();
    
);

Cree una clase que implemente el Runnable interfaz. Coloque el código que desea ejecutar en el run() método: ese es el método que debe escribir para cumplir con el Runnable interfaz. En tu hilo “principal”, crea un nuevo Thread clase, pasando al constructor una instancia de su Runnable, luego llame start() en eso. start le dice a la JVM que haga la magia para crear un nuevo hilo, y luego llame a su run método en ese nuevo hilo.

public class MyRunnable implements Runnable 

    private int var;

    public MyRunnable(int var) 
        this.var = var;
    

    public void run() 
        // code in the other thread, can reference "var" variable
    


public class MainThreadClass 
    public static void main(String args[]) 
        MyRunnable myRunnable = new MyRunnable(10);
        Thread t = new Thread(myRunnable)
        t.start();
        

Eche un vistazo al tutorial de simultaneidad de Java para comenzar.

Si se va a llamar a su método con frecuencia, es posible que no valga la pena crear un nuevo hilo cada vez, ya que esta es una operación costosa. Probablemente sería mejor usar un grupo de subprocesos de algún tipo. Mira esto Future, Callable, Executor clases en el java.util.concurrent paquete.

En Java 8 puede hacer esto con una línea de código.

Si su método no toma ningún parámetro, puede usar una referencia de método:

new Thread(MyClass::doWork).start();

De lo contrario, puede llamar al método en una expresión lambda:

new Thread(() -> doWork(someParam)).start();

Reseñas y calificaciones del artículo

Recuerda dar recomendación a este artículo si te fue de ayuda.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *