1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
import java.util.concurrent.locks.ReentrantLock fun main() { val lock = ReentrantLock() // Función que utiliza el lock para controlar el acceso a una sección crítica fun doSomething() { lock.lock() // Adquirir el bloqueo try { // Sección crítica: código que necesita protección println("${Thread.currentThread().name} está realizando una tarea protegida.") Thread.sleep(1000) // Simular una operación que necesita protección } finally { lock.unlock() // Liberar el bloqueo en cualquier caso } } // Crear varios hilos que ejecutan la función doSomething val thread1 = Thread { doSomething() } val thread2 = Thread { doSomething() } // Iniciar los hilos thread1.start() thread2.start() // Esperar a que los hilos terminen thread1.join() thread2.join() } |