2010-05-10 21 views
5

Me preguntaba cuál sería el enfoque más eficiente para implementar algún tipo de tarea en segundo plano en Java (supongo que sería algún tipo de subprocesos sin bloqueo). Para ser más precisos, tengo un código Java y luego, en algún momento, necesito ejecutar una operación de larga ejecución. Lo que me gustaría hacer es ejecutar esa operación en segundo plano para que el resto del programa pueda seguir ejecutándose y cuando esa tarea se complete simplemente actualice algún objeto específico que. Este cambio sería detectado por otros componentes.tarea de fondo java

Respuesta

2
+1

Sí, esto es lo que estaba buscando, más específicamente Ejecutores, .. Gracias. – markovuksanovic

+0

¿Podría poner su propia respuesta sobre ejecutores? Estaba a punto de hacer una pregunta muy similar. Creo que los ejecutores deberían mencionarse como una respuesta específica. Le daría un voto positivo. No quiero poner una respuesta para robar puntos. Especialmente porque JEE desalienta el engendramiento de nuevos Hilos. – Wes

-1

ingenua idea: es posible que pueda crear hilo, darle una prioridad baja, y hacer un bucle de:

  • haciendo un poco de trabajo
  • que el rendimiento o el sueño para que otros hilos trabajar en parrallel

Eso dependerá de lo que realmente quiere hacer en su hilo

6

¿quieres hacer un nuevo hilo; dependiendo de cuánto tiempo el método tiene que ser, se puede hacer en línea:

// some code 
new Thread(new Runnable() { 
    @Override public void run() { 
     // do stuff in this thread 
    } 
}).start(); 

O simplemente hacer una clase nueva:

public class MyWorker extends Thread { 
    public void run() { 
     // do stuff in this thread 
    } 
} 

// some code 
new MyWorker().start(); 
+0

¿No sería posible aquí que el hilo de larga duración le robe CPU y no permita que se ejecuten los otros hilos? – phtrivier

+0

No se recomienda crear nuevos subprocesos en JEE. – Wes

-1

Sí, vas a querer hacer girar la operación fuera a su propio hilo. Agregar nuevos hilos puede ser un poco peligroso si no tienes cuidado y eres consciente de lo que eso significa y cómo interactuarán los recursos. Aquí hay un buen introduction to threads para ayudarlo a comenzar.

0

Hacer un hilo. Marca este hilo como Daemon. La JVM sale cuando el único subproceso que se ejecuta son todos los subprocesos de daemon.

Cuestiones relacionadas