2010-01-16 14 views
15

Aquí está mi código:¡Solo un hilo a la vez!

new Thread() { 
    @Override 
    public void run() { 
     try { player.play(); } 
     catch (Exception e) { System.out.println(e); } 
    } 
}.start(); 

que crea e inicia un hilo. Me gustaría modificar este código para que el hilo solo comience si no hay otros hilos abiertos en ese momento. Si hay me gustaría cerrarlos, y comenzar este. ¡Gracias por adelantado!

+3

(excepto el hilo principal, supongo;)) –

Respuesta

36

Puede crear un ExecutorService que solo permita un solo hilo con el método Executors.newSingleThreadExecutor. Una vez que el ejecutor de un solo hilo, puede llamar execute con un parámetro Runnable:

Executor executor = Executors.newSingleThreadExecutor(); 
executor.execute(new Runnable() { public void run() { /* do something */ } }); 
+0

fascinante, no sé si voy a tener esto, pero bueno saberlo. –

+0

Pero entonces solo podía tener un solo hilo ejecutándose a la vez. – danben

+1

Eso es lo que él quiere, pensé, solo 1 subproceso de ese tipo se ejecuta en un momento dado. –

-6

Se puede crear un miembro de datos estáticos de la clase (donde roscado se lleva a cabo) que se incrementa cada vez que un objeto de esa clase se llama, que lee y te sale el número de hilos comenzó

+1

es una buena idea, pero ¿cómo puedo cerrar los otros hilos? no tendría ninguna referencia a ellos –

Cuestiones relacionadas