Lock 的应用
- 可重复性锁,相比传统的synchronized
- ReentrantLock更直观,直观上锁解锁
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/36d493834823d781323f5a15494a1837.png)
package cn.usts.edu.lesson08;
import java.util.concurrent.locks.ReentrantLock;
public class LockDemo implements Runnable{
private int tickets=10;
private final ReentrantLock lock = new ReentrantLock();
public static void main(String[] args) {
LockDemo lockDemo = new LockDemo();
new Thread(lockDemo).start();
new Thread(lockDemo).start();
new Thread(lockDemo).start();
}
@Override
public void run() {
try {
lock.lock();
while (true){
if (tickets>0){
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(tickets--);
}
else {
break;
}
}
}finally {
lock.unlock();
}
}
}