Java并发之ReentrantReadWriteLock
原创
©著作权归作者所有:来自51CTO博客作者wx63db212c2853a的原创作品,请联系作者获取转载授权,否则将追究法律责任
ReentrantReadWriteLock分为读和写锁:
package com.lxht.test;
import java.util.concurrent.locks.ReentrantReadWriteLock;
/**
* 测试ReentrantReadWriteLock
*/
public class TestReenTrantWriteReadLock {
public static void main(String[] args) {
ReentrantReadWriteLock readLock = new ReentrantReadWriteLock();
WriteThread thread1 = new WriteThread(readLock);
WriteThread thread4 = new WriteThread(readLock);
Thread thread2 = new ReadThread(readLock);
Thread thread3 = new ReadThread(readLock);
thread1.start();
thread2.start();
thread3.start();
thread4.start();
}
}
/**
* 读线程
*/
class ReadThread extends Thread {
private ReentrantReadWriteLock readLock;
public ReadThread(ReentrantReadWriteLock readLock) {
this.readLock = readLock;
}
public void run() {
readLock.readLock().lock();
for (int i = 0; i < 10; i++) {
System.out.println(this.getName() + ";i =" + i);
}
readLock.readLock().unlock();
}
}
/**
* 写线程
*/
class WriteThread extends Thread {
private ReentrantReadWriteLock readLock;
public WriteThread(ReentrantReadWriteLock readLock) {
this.readLock = readLock;
}
public void run() {
readLock.writeLock().lock();
for (int i = 0; i < 10; i++) {
System.out.println(this.getName() + ";i =" + i);
}
readLock.writeLock().unlock();
}
}