Articles of concurrencia

Barreras de memoria y estilo de encoding sobre una VM Java

Supongamos que tengo un objeto complejo estático que se actualiza periódicamente por un conjunto de subprocesos y lee más o menos continuamente en un subproceso de larga ejecución. El objeto en sí es siempre inmutable y refleja el estado más reciente de algo. class Foo() { int a, b; } static Foo theFoo; void updateFoo(int […]

¿Cómo usar ConcurrentLinkedQueue?

¿Cómo uso un ConcurrentLinkedQueue en Java? Usando este LinkedQueue , ¿debo preocuparme por la concurrencia en la cola? ¿O solo tengo que definir dos métodos (uno para recuperar elementos de la lista y otro para agregar elementos a la lista)? Nota: obviamente, estos dos métodos deben estar sincronizados. ¿Derecha? EDITAR: Lo que trato de hacer […]

Implementaciones de Java Queue, ¿cuál?

De Javadoc: Una ConcurrentLinkedQueue es una opción adecuada cuando muchos hilos compartirán el acceso a una colección común. Esta cola no permite elementos nulos. ArrayBlockingQueue es un clásico “buffer delimitado”, en el que una matriz de tamaño fijo contiene elementos insertados por los productores y extraídos por los consumidores. Esta clase admite una política de […]

¿Qué algoritmo de clasificación en paralelo tiene el mejor rendimiento promedio de casos?

La ordenación toma O (n log n) en el caso de serie. Si tenemos procesadores O (n), esperaríamos una aceleración lineal. Existen algoritmos paralelos O (log n) pero tienen una constante muy alta. Tampoco son aplicables en hardware básico que no tiene en ningún lugar cerca de procesadores O (n). Con los procesadores p, los […]

¿Cómo funciona el patrón disruptivo de LMAX?

Estoy tratando de entender el patrón disruptivo . He visto el video de InfoQ e intenté leer su artículo. Entiendo que hay un buffer en anillo involucrado, que se inicializa como una matriz extremadamente grande para aprovechar la ubicación del caché, eliminar la asignación de memoria nueva. Parece que hay uno o más enteros atómicos […]

MySQL INSERT IF (declaraciones personalizadas si)

Primero, aquí está el resumen conciso de la pregunta: ¿Es posible ejecutar una INSERT condicionalmente? Algo parecido a esto: IF(expression) INSERT… Ahora, sé que puedo hacer esto con un procedimiento almacenado. Mi pregunta es: ¿puedo hacer esto en mi consulta? Ahora, ¿por qué querría hacer eso? Supongamos que tenemos las siguientes 2 tablas: products: id, […]

Elegir la mejor lista de concurrencia en Java

Mi grupo de subprocesos tiene un número fijo de subprocesos. Estos hilos necesitan escribir y leer con frecuencia de una lista compartida. Entonces, ¿qué estructura de datos (mejor sea una lista, debe estar libre de monitores) en el paquete java.util.concurrent es la mejor en este caso?

Enumerar la secuencia to Future

Estoy tratando de convertir List<CompletableFuture> a CompletableFuture<List> . Esto es bastante útil, como cuando tiene muchas tareas asíncronas y necesita obtener resultados de todas ellas. Si alguno de ellos falla, el futuro final falla. Así es como lo he implementado: public static CompletableFuture<List> sequence2(List<CompletableFuture> com, ExecutorService exec) { if(com.isEmpty()){ throw new IllegalArgumentException(); } Stream<? extends […]

¿Cómo llamo a algún método de locking con un tiempo de espera en Java?

¿Existe una buena forma estándar de llamar a un método de locking con un tiempo de espera en Java? Quiero ser capaz de hacer: // call something.blockingMethod(); // if it hasn’t come back within 2 seconds, forget it Si eso tiene sentido. Gracias.

¿A qué nivel bloquea MongoDB las escrituras? (o: ¿qué significa “por conexión”?

En la documentación de mongodb, dice: A partir de la versión 2.2, MongoDB implementa lockings por base de datos para la mayoría de las operaciones de lectura y escritura. Algunas operaciones globales, generalmente operaciones de corta vida que involucran múltiples bases de datos, aún requieren un locking global de “instancia” global. Antes de 2.2, solo […]