读写锁 ReadWriteLock
package com.aop8.testJava;
import java.util.concurrent.locks.ReadWriteLock;
import java.util.concurrent.locks.ReentrantReadWriteLock;
public class TestReadWriteLock {
public static void main(String[] args) {
final ReadWriteLockDemo readWriteLockDemo=new ReadWriteLockDemo();
new Thread(new Runnable() {
public void run() {
readWriteLockDemo.set((int)(Math.random()*1001));
}
},"Write").start();
for (int i = 0; i < 100; i++) {
new Thread(new Runnable() {
public void run() {
readWriteLockDemo.get();
}
},"Read_"+i).start();;
}
}
}
class ReadWriteLockDemo {
private int number=0;
private ReadWriteLock lock=new ReentrantReadWriteLock();
public void get(){
lock.readLock().lock();
try{
System.out.println(Thread.currentThread().getName()+" : "+number);
}finally{
lock.readLock().unlock();
}
}
public void set(int number){
lock.writeLock().lock();
try{
System.out.println(Thread.currentThread().getName()+" : "+number);
this.number=number;
}finally{
lock.writeLock().unlock();
}
}
}