概述
Synchronzied属于我们java中内置关键字,底层jdk帮我们封装好了,lock是基于aqs封装的锁。
Synchronzied可以理解为自动挡,当代码运行完毕,或者程序抛出异常的情况下才会释放锁。
Lock:可以完全人为控制获取锁,释放锁,扩展性非常高。
代码演示Lock锁:
我们来写一个卖票的程序:
public class TestDemo implements Runnable {
//定义100张票
private static int count = 100;
//定义一个lock锁
private Lock lock = new ReentrantLock();
@Override
public void run() {
//票数大于零,才让做卖票操作
while (count > 0) {
manuaTicketing();
}
}
private void manuaTicketing() {
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
try {
//获取锁
lock.lock();
if (count > 0) {
System.out.println(Thread.currentThread().getName() + "卖出了第" + (100 - count+1) + "张票");
count--;
}else{
System.out.println("票都卖完啦!!!");
}
}catch (Exception e){
} finally {
//释放锁
lock.unlock();
}
}
public static void main(String[] args) {
//开几个窗口开始卖票
TestDemo testDemo = new TestDemo();
new Thread(testDemo).start();
new Thread(testDemo).start();
}
}
最后
以上就是羞涩蜻蜓为你收集整理的Lock锁与Synchronized锁的区别的全部内容,希望文章能够帮你解决Lock锁与Synchronized锁的区别所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复