English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Hay dos métodos para bloquear recursos compartidos mediante múltiples hilos. Uno es el bloqueo reentrante (Or ReadWriteLock), y el otro es usar el método Synchronized.
Java 5La clase ReentrantLock se proporciona en el paquete de concurrencia de Java.
Es una implementación de Lock interface, según java docs, las implementaciones de Lock interface proporcionan operaciones más amplias que las que se pueden obtener utilizando métodos sincronizados.
Número | Clave | Cerradura reentrante | Sincronizado |
---|---|---|---|
1 | Obtener cerraduras | La clase de cerradura reentrante proporcionalock() Métodos para obtener cerraduras de recursos compartidos a través de hilos | Solo necesita escribir la palabra clave synced para obtener la cerradura |
2 | Liberación de cerraduras | Para liberar la cerradura, el programador debe llamarunlock() Método | Finalización implícita |
3 | Capacidad de interrupción | El método lockInterruptible() se puede usar para interrumpir un hilo | No hay manera de interrumpir un hilo |
4 | Equidad | Este constructor tiene un parámetro de equidad. Si se establece en true, se otorgará el bloqueo a los que han esperado más tiempo *Derechos de acceso de hilos | Las cerraduras no garantizan ningún derecho de acceso específico |
5 | Orden de liberación de cerraduras | Las cerraduras pueden liberarse en cualquier orden | Las cerraduras deben liberarse en el orden en que se obtuvieron |
public class ReentrantLockExample implements Runnable{ private Lock lock=new ReentrantLock(); @Override public void run() { try { lock.lock() //Bloquear algunos recursos } catch (InterruptedException e) { e.printStackTrace(); } finally { lock.unlock(); } } }
public class SynchronizedLockExample implements Runnable{ @Override public void run() { synchronized (resource) { //Bloquear algunos recursos } } }