1,回顾app
到目前,咱们讲了3个跟多个线程操做一个资源的技术点,主要涉及如下几个点:ide
synchronized:原子性,重量级锁spa
volatile:可见性,不保证原子性线程
采用JDK提供的原子类orm
2,Lock接口
在JDK1.5后,为咱们提供了Lock接口资源
主要有三个特色it
1,明确加锁和解锁class
lock(),unlock()import
public class LockTest {
private Lock lock = new ReentrantLock();
public void lockTest(){
try{
lock.lock();
System.out.println("do something...");
}finally{
lock.unlock();
}
}
}
2,能够尝试访问锁
tryLock()
3,能够构建公平锁,解决咱们以前说的饥饿问题,实现公平性
采用Lock的实现类ReentrantLock能够构建公平锁
Lock lock = new ReentrantLock(true);//true就是为公平锁 fair
思考题:
如何实现一个本身的Lock?以及实现可重入?