2011-05-23 17 views
12

Buen día todos, para ejecutar múltiples hilos simultáneamente es recomendable crear diferentes objetos de hilo de una clase o crear dos clases donde uno implemente ejecutable y uno amplíe un hilo y luego cree objetos de hilo de ambos como es necesario suponer que estamos tratando de ejecutar 7- 10 tareas al mismo tiempo.Ejecutando múltiples hilos al mismo tiempo

  1. cuál son las mejores soluciones? ..
  2. ¿Hay trampas o impacto en el rendimiento, si uno crea diferentes objetos de rosca de una sola clase ?.

Gracias. Consejos apreciados como siempre.

+0

Un hilo y un proceso son dos cosas diferentes. Si te refieres a hilo, utiliza el término "hilo", no el término "proceso". –

+0

¿Realmente quieres decir procesos del sistema operativo? Eso es lo que generalmente significan los procesos en el contexto de la programación; si realmente quiere decir trabajos o tareas, evite usar el proceso de palabras porque confundirá a otros programadores. –

+0

¡Uy, lo siento, quise decir hilos! – Rexx

Respuesta

2

Yo personalmente iría por la opción (1) (Creando 2 hilos diferentes de la misma clase).

No creo que haya necesidad de crear 2 clases diferentes para el trabajo que se puedan hacer con 2 hilos diferentes de la misma clase.

18
  1. Tome un vistazo a la gran paquete java.util.concurrent
  2. No hay trampas rendimiento de la creación de diferentes objetos de rosca de una sola clase

He aquí un breve ejemplo:

private static class SomeTask implements Runnable 
{ 
    @Override 
    public void run() 
    { 
    doSomething(); 
    } 
} 

public static void main(String[] args) 
{ 
    ExecutorService executor = Executors.newCachedThreadPool(); 
    for (int i = 0; i < 8; i++) executor.execute(new SomeTask()); 
} 
1

Hay poca diferencia en el rendimiento entre la creación de un subproceso extendiendo Thread o implementando Runnable y usando new Thread(runnable). Si usar una clase o varias también es irrelevante. Debe diseñar su estructura de clase en función del trabajo que se debe realizar; si dos hilos están haciendo el mismo trabajo en diferentes datos, use la misma clase para ambos.

El acceso a datos compartidos (ya sean variables de clase estáticas u otra cosa) siempre es un gran problema.

2

No creo que importe la forma en que lo haga. Si vas a tener muchos hilos de corta vida, probablemente quieras un grupo de hilos, mira java.util.concurrent.Executors. Por lo general, creo una clase anónima de tipo ejecutable, p. Ej.

executor.execute(new Runnable() { 
    //thread code goes here 
}); 
0

Lo principal que hace la diferencia es la forma en que usted ha diseñado su jerarquía de objetos: Si extiende clase Thread, no se puede ampliar cualquiera de las otras clases (Java es la herencia simple). por lo tanto, al implementar Runnable, aún puede extender otras clases en su modelo de dominio.

Cuestiones relacionadas