Articles of concurrency

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. […]

CountDownLatch vs. Semaphore

¿Hay alguna ventaja de usar java.util.concurrent.CountdownLatch en lugar de java.util.concurrent.Semaphore ? Por lo que puedo decir, los siguientes fragmentos son casi equivalentes: 1. Semáforo final Semaphore sem = new Semaphore(0); for (int i = 0; i < num_threads; ++ i) { Thread t = new Thread() { public void run() { try { doStuff(); } […]

¿Imposible crear un grupo de subprocesos en caché con un límite de tamaño?

Parece imposible crear un grupo de subprocesos en caché con un límite en la cantidad de subprocesos que puede crear. Así es como se implementa Executors.newCachedThreadPool estático en la biblioteca estándar de Java: public static ExecutorService newCachedThreadPool() { return new ThreadPoolExecutor(0, Integer.MAX_VALUE, 60L, TimeUnit.SECONDS, new SynchronousQueue()); } Entonces, usando esa plantilla para continuar creando un […]

¿Cuál es el algoritmo de progtwigción de JVM?

Tengo mucha curiosidad sobre cómo funciona la JVM con los hilos. En mis búsquedas en Internet, encontré material sobre RTSJ, pero no sé si son las instrucciones correctas para mis respuestas. También encontré este tema en los foros de sun, http://forums.sun.com/thread.jspa?forumID=513&threadID=472453 , pero eso no es satisfactorio. ¿Puede alguien darme algunas indicaciones, material, artículos o […]

Ejecutores de Java: ¿cómo puedo establecer la prioridad de la tarea?

¿Existe la posibilidad de asignar prioridad a las tareas que ejecutan los ejecutores? He encontrado algunas declaraciones en JCIP sobre esto, pero no puedo encontrar ningún ejemplo y no encuentro nada relacionado con los documentos. De JCIP: Una política de ejecución especifica el “qué, dónde, cuándo y cómo” de la ejecución de tareas, incluyendo: … […]

¿Cómo se consulta un pthread para ver si aún se está ejecutando?

En mi destructor quiero destruir un hilo limpiamente. Mi objective es esperar a que un hilo termine de ejecutarse y LUEGO destruir el hilo. Lo único que encontré sobre la consulta del estado de un pthread es pthread_attr_setdetachstate, pero esto solo te dice si tu hilo es: PTHREAD_CREATE_DETACHED PTHREAD_CREATE_JOINABLE Ambas cosas no tienen nada que […]

Executors.newCachedThreadPool () versus Executors.newFixedThreadPool ()

newCachedThreadPool() versus newFixedThreadPool() ¿Cuándo debería usar uno u otro? ¿Qué estrategia es mejor en términos de utilización de recursos?

¿Cuál sería mejor para las tareas concurrentes en node.js? Fibras? ¿Trabajadores web? o hilos?

Tropecé con node.js en algún momento y me gustó mucho. Pero pronto descubrí que carecía de la capacidad de realizar tareas intensivas de CPU. Entonces, comencé a buscar en Google y obtuve estas respuestas para resolver el problema: Fibras, Webworkers y Threads (thread-a-gogo). Ahora cuál usar es una confusión y uno de ellos definitivamente necesita […]

Por qué no hay ConcurrentHashSet contra ConcurrentHashMap

HashSet se basa en HashMap. Si observamos la implementación de HashSet , todo se gestiona bajo HashMap . se utiliza como una clave de HashMap . Y sabemos que HashMap no es seguro para subprocesos. Es por eso que tenemos ConcurrentHashMap en Java. En base a esto, estoy confundido acerca de por qué no tenemos […]

ACTUALIZACIÓN ATÓMICA .. SELECCIONAR en Postgres

Estoy construyendo un mecanismo de hacer cola. Hay filas de datos que necesitan procesamiento y un indicador de estado. Estoy usando una update .. returning cláusula de update .. returning para administrarlo: UPDATE stuff SET computed = ‘working’ WHERE id = (SELECT id from STUFF WHERE computed IS NULL LIMIT 1) RETURNING * ¿La parte […]