Articles of concurrency

Bloque ThreadPoolExecutor cuando la cola está llena?

Estoy tratando de ejecutar muchas tareas usando un ThreadPoolExecutor. A continuación se muestra un ejemplo hipotético: def workQueue = new ArrayBlockingQueue(3, false) def threadPoolExecutor = new ThreadPoolExecutor(3, 3, 1L, TimeUnit.HOURS, workQueue) for(int i = 0; i < 100000; i++) threadPoolExecutor.execute(runnable) El problema es que obtengo rápidamente una java.util.concurrent.RejectedExecutionException ya que el número de tareas excede […]

Java: ExecutorService que bloquea el envío después de un determinado tamaño de cola

Estoy tratando de codificar una solución en la que una única hebra produce tareas intensivas de E / S que se pueden realizar en paralelo. Cada tarea tiene importantes datos en memoria. Así que quiero poder limitar el número de tareas pendientes en un momento. Si creo ThreadPoolExecutor de esta manera: ThreadPoolExecutor executor = new […]

Concurrencia de Java: locking de cuenta regresiva vs barrera cíclica

Estaba leyendo la API de java.util.concurrent , y encontré que CountDownLatch : un CountDownLatch sincronización que permite que uno o más subprocesos esperen hasta que se complete un conjunto de operaciones en otros subprocesos. CyclicBarrier : un CyclicBarrier sincronización que permite que un conjunto de hilos espere unos a otros para alcanzar un punto de […]

¿Debo proteger el acceso de lectura a un contenedor STL en un entorno de subprocesos múltiples?

Tengo un contenedor std :: list y estos hilos: Un hilo de escritor que agrega elementos indefinidamente. Un hilo de lector / escritor que lee y elimina elementos mientras está disponible. Varios hilos de lectura que acceden al TAMAÑO del contenedor (utilizando el método size ()) Hay un mutex normal que protege el acceso a […]

Java ExecutorService: awaitTermination de todas las tareas creadas recursivamente

Uso un ExecutorService para ejecutar una tarea. Esta tarea puede crear recursivamente otras tareas que se envían al mismo ExecutorService y esas tareas secundarias también pueden hacer eso. Ahora tengo el problema de que quiero esperar hasta que se hayan completado todas las tareas (es decir, todas las tareas hayan finalizado y no hayan enviado […]

¿Cuáles son las ventajas de usar un ExecutorService?

¿Cuál es la ventaja de utilizar ExecutorService sobre la ejecución de subprocesos pasando un Runnable al constructor Thread ?

¿Los métodos estáticos no sincronizados son seguros si no modifican las variables de clase estáticas?

Me preguntaba si tiene un método estático que no está sincronizado, pero no modifica ninguna variable estática ¿es seguro para subprocesos? ¿Qué pasa si el método crea variables locales dentro de él? Por ejemplo, ¿el siguiente código es seguro para la ejecución de subprocesos? public static String[] makeStringArray( String a, String b ){ return new […]

Forma correcta de sincronizar ArrayList en Java

No estoy seguro de si esta es la forma correcta de sincronizar mi ArrayList . Tengo una ArrayList in_queue que se transfiere desde la función registerInQueue . ArrayList in_queue = null; public void registerInQueue(ArrayList in_queue) { this.in_queue = in_queue; } Ahora estoy tratando de sincronizarlo. ¿Esto está sincronizando correctamente mi objeto in_queue ? List in_queue_list […]

Contenedor Jboss Java EE y un ExecutorService

Tengo una aplicación java independiente que utiliza el ExecutorService para procesar varios trabajos en paralelo ExecutorService es = Executors.newFixedThreadPool(10); Ahora quiero volver a utilizar la misma solución dentro de un bean EJB pero no estoy seguro de cómo inicializar correctamente el ThreadPool, ya que normalmente dejaría el contenedor Java EE para controlar todos los recursos […]

Java ReentrantReadWriteLocks: ¿cómo adquirir de forma segura el locking de escritura?

Estoy utilizando en mi código en este momento un ReentrantReadWriteLock para sincronizar el acceso a través de una estructura similar a un árbol. Esta estructura es grande y es leída por muchos hilos a la vez con modificaciones ocasionales en partes pequeñas, por lo que parece ajustarse bien a la expresión de lectura y escritura. […]