Programación concurrente en Java: colaboración entre hilos mediante wait/notify y Condition

Introducción En la programación concurrente, la sincronización es fundamental para evitar condiciones de carera. Sin embargo, en muchos escenarios reales se requiere colaboración entre hilos. Un ejemplo clásico es el modelo productor-consumidor: cuando la cola está llena, el productor debe esperar a que haya espacio disponible, liberando el acc ...

Publicado el 7-15 04:54

Programación Concurrente en Python: Bloqueos, Sincronización y Semáforos

Conceptos Fundamentales ①Concurrencia: Capacidad de un sistema para procesar múltiples tareas durante un período de tiempo ②Paralelismo: Capacidad de un sistema para prcoesar múltiples tareas simultáneamente ③Síncrono: Cuando un proceso encuentra una operación de E/S (esperando datos externos), se detiene y no continúa su ejecución. ④Asíncrono: ...

Publicado el 7-11 01:35

Bloques de Código Sincronizado en Java

Para comprender mejor los bloques de código sincronizado, primero analizaremos dos conjuntos de código funcionalmente similares sin sincronización y sus resultados de ejecución en diferentes estados. Veamos el primer conjunto: package com.ejemplos.sincronizacion; public class DemoSincronizacion { public static void main(String[] args) { ...

Publicado el 7-8 02:07

CountDownLatch y CyclicBarrier: Sincronización de hilos en sistemas de reconciliación

En un sistema de reconciliación para pedidos en línea, el objetivo es verificar discrepancias entre órdenes de compra y envíos. El flujo actual involucra consultar una base de datos de órdenes, luego una de envíos, comparar ambas y almacenar diferencias. Inicialmente, este proceso se ejecuta de forma secuencial en un solo hilo, lo que puede res ...

Publicado el 7-4 01:25

Fundamentos de Hilos en Java

La concurrencia en Java se maneja principalmente a través de su API de Hilos (Threads), que permite la ejecución simultánea de múltiples tareas. Esto optimiza el uso de la CPU y mejora el rendimiento general de las aplicaciones. Conceptos Clave Procesos vs. Hilos Proceso: Unidad de asignación de recursos del sistema operativo. Hilo: Unidad de ...

Publicado el 6-29 05:59

Multithreading en Java

Conceptos de Procesos e Hilos La mayoría de los sistemas operativos soportan el modelo de procesos. Una tarea generalmente se asocia a un proceso. Las características principales de un proceso incluyen: Ser independientes con recursos dedicados. Poseer un ciclo de vida y estados específicos. Permitir la ejecución concurrente en un procesador ú ...

Publicado el 6-21 19:55

Conceptos de Hilos y Procesos en Java

Definición de Hilos y Procesos Un proceso es una unidad independiente en el sistema operativo para la asignación de recursos y planificación. Representa la ejecución de un programa con un conjunto de datos, con su propio espacio de direcciones que incluye secciones de texto, datos y pila, sin compartir memoria con otros procesos. Un hilo es una ...

Publicado el 6-16 20:47

Métodos para Crear Hilos en Java

Formas de Instanciar Procesos Concurrentes ============ Extendiendo la clase Thread y modificando el método ejecutar() Implementando la interfaz Runnable Implementando la interfaz Callible Clases anónimas y expresiones lambda Grupos de hilos Métodos asíncronos en Spring Temporizador (java.util.Timer) A continuación se detal ...

Publicado el 6-11 03:44

Patrón de Doble Verificación (DCL) y su Solución

El patrón de Doble Verificación Bloqueada (o DCL por sus siglas en inglés) es una implementación errónea que intenta optimizar la inicialización perezosa de instancias únicas (singletons) para evitar la sobrecarga de sincronización en cada acceso. Una implementación correcta, aunque sincrónica, sería: public class FabricaCorrecta { private s ...

Publicado el 6-9 05:08

Programación Multihilo en Java

Introducción a los Hilos: Un hilo es una vía de ejecución independiente Los programas en ejecución tienen muchos procesos en segundo plano como el hilo principal, young.gc, full.gc() main es el hilo principal, punto de entrada del sistema, utilizado para ejecutar todo el programa En un proceso, si se abren múltiples hilos, la ejecución de los ...

Publicado el 6-7 02:33