JUC --- bloqueo de lectura-escritura

1. ReadWriteLock: la operación de lectura y el subproceso de operación de escritura se ejecutan juntos para mejorar la eficiencia de la misma operación.

2. Código de prueba:

  

clase pública T_ReadWriteLock { 

bloqueo de bloqueo estático = nuevo ReentrantLock ();

ReadWriteLock estático readWriteLock = nuevo ReentrantReadWriteLock ();
Bloqueo estático readLock = readWriteLock.readLock ();
Bloqueo estático writeLock = readWriteLock.writeLock ();


lectura de vacío estático público (bloqueo de bloqueo) {

try {
lock.lock ();
// 读 需要 1 秒
Thread.sleep (1000);
System.out.println ("读 完毕!");

} catch (Excepción e) {
e.printStackTrace ();
} finalmente {
lock.unlock ();
}

}

escritura anulada pública estática (bloqueo de bloqueo) {
intente {
lock.lock ();
// 写 需要 2 秒
Thread.sleep (2000);
System.out.println ("写 完毕!");
} catch (Excepción e) {
e.printStackTrace ();
} finalmente {
lock.unlock ();
}
}


public static void main (String [] args) {

// Ejecutable read = () -> read (lock); // 使用 正常 锁
// Ejecutable write = () -> write (lock);

Lectura ejecutable = () -> leer (readLock);
Ejecutable write = () -> write (writeLock);

for (int i = 0; i <18; i ++) new Thread (read) .start ();
for (int i = 0; i <2; i ++) new Thread (write) .start ();

}

}

Supongo que te gusta

Origin www.cnblogs.com/tengri-fighting/p/12758711.html
Recomendado
Clasificación