读写锁
ReadWriteLock 读写锁 它的实现类对象为ReentrantReadWriteLock
1.获取读锁:锁对象.readLock
2.获取写锁:锁对象.writeLock
3.读锁可以共享 写锁则互斥
package com.Trylockkk;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReadWriteLock;
import java.util.concurrent.locks.ReentrantReadWriteLock;
public class ReadWrite001 {
static ReadWriteLock readwrite = new ReentrantReadWriteLock();
static Lock read = readwrite.readLock();
static Lock write = readwrite.writeLock();
public static void method1(){
try {
read.lock();
System.out.println("读线程获取锁" + System.currentTimeMillis());
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
System.out.println("读线程释放锁");
read.unlock();
}
}
public static void method2(){
try {
write.lock();
System.out.println("写线程获取锁" + System.currentTimeMillis());
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
System.out.println("写线程释放锁");
write.unlock();
}
}
public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
new Thread(new Runnable() {
@Override
public void run() {
method1();
}
}).start();
}
for (int i = 0; i < 10; i++) {
new Thread(new Runnable() {
@Override
public void run() {
method2();
}
}).start();
}
}
}