Lock实现更广泛的锁操作
1.Lock概述
synchronized关键字的上锁和解锁都是自动完成,在JUC中可以使用Lock接口实现手动上锁解锁,并且可以更加精准的控制等待唤醒
2.ReentrantLock
public class TestLock {
public static void main(String[] args) {
TicketTask ticketTask = new TicketTask();
for (int i = 0; i < 10; i++) {
new Thread(ticketTask, "线程" + i).start();
}
}
}
class TicketTask implements Runnable {
private int number = 500;
private Lock lock = new ReentrantLock();
@Override
public void run() {
while (true) {
lock.lock();
try {
if (number > 0) {
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
number--;
System.out.println(Thread.currentThread().getName() + "完成售票:" + number);
} else {
break;
}
} finally {
lock.unlock();
}
}
}
}
3.ReentrantReadWriteLock
"如果文章对您有帮助,可以请作者喝杯咖啡吗?"

微信支付

支付宝
Lock实现更广泛的锁操作
https://blog.liuzijian.com/post/java/2022/09/23/juc-lock.html