线程锁和同步异步相关问题整理

线程锁和同步异步相关问题整理

什么是线程同步?

排队机制

什么是线程异步?

多个线程使用同一个资源,抢占资源

同步和异步的区别:

1.同步最安全,效率低
2.异步效率高,但是容易造成死锁

造成死锁的原因:

1.两个或两个以上的线程在执行的过程中,因争夺资源而造成的一种互相等待资源,最后造成死锁的现象。

死锁的条件:

1.互斥条件
2.请求和保持条件
3.不可剥夺条件
4.循环等待条件

如何避免死锁?

1.加锁顺序
2.加锁时限
3.加锁检测

如何实现线程同步?

1.通过synchronized关键字,来实现同步,
2.使用wait()与notify()或者notifyAll()
3.Lock重入锁
4.volatitle关键字—特殊域变量
5.使用局部变量—ThreadLocal

synchronized和Lock的区别:
synchronized:

1.synchronized锁是使用Object类本身提供的wait,notify,notifyAll方法的调度机制
2.synchronized可以用在方法上和代码块上,而括号中要放需要表示的锁对象(常用this表示)
3.synchronized是JVM执行的
4.synchronized会自动释放锁
5.synchronized是java内置的关键词
6.无法判断锁状态

Lock

1.Lock锁是使用condition包进行线程之间的调度
2.Lock锁需要指定起止位置
3.Lock是通过代码实现的
4.Lock需要手动释放
5.Lock是接口
6.可以判断锁状态

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值