并发编程学习小记

2 篇文章 0 订阅
1 篇文章 0 订阅

JAVA并发学习小记


临界区:产生竞态条件的代码区域。

阻塞:同步块,wait()均会造成线程阻塞。

悲观锁:使用阻塞的方式防止其他线程写入正在被读或在写的数据。试图修改该数据的线程将阻塞等待至正在写入的线程的写入操作完成。

乐观锁:不管如何,先尝试修改数据,如果在写入时发现数据已经被改变则返回操作失败,否则直接写入修改的数据。与悲观锁不同在于并没有阻塞线程。

饥饿:同步块、notify()、notifyAll()是随机唤醒阻塞线程的,RP不好有些线程将一直无法唤醒,造成线程饥饿。

公平锁:仅使用同步块与wait(),notify(),notifyAll()实现的锁在释放锁时会随机唤醒正在阻塞等待的线程,有可能会造成饥饿现象。公平锁会给与所有等待线程同等的机会(并非随机,通常按一定顺序)唤醒并继续获得锁。

重入:继续获得已经持有的锁称为重入。

可重入锁:如果当前线程已经持有该锁,则可以继续再次持有该锁。

不可重入锁:锁只能被持有一次,不能被重复持有。

死锁:多个线程互相等待彼此来释放锁,但同时又持有其他线程所需要的锁。

活锁:非阻塞算法可能产生的情况,多个线程请求执行更改均失败并重复请求。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值