
JUC
一只Java程序猿
一只JAVA程序猿
展开
-
实现一个自旋锁
自旋锁的好处:循环比较获取没有类似wait的阻塞。原创 2022-12-28 21:26:12 · 80 阅读 · 0 评论 -
为什么会有公平锁/非公平锁的设计
1.恢复挂起的线程到真正锁的获取还是有时间差的,从开发人员来看这个时间微乎其微,但是从CPU的角度来看,这个时间差存在的还是很明显的。所以非公平锁能够充分的利用CPU的时间片,尽量减少CPU空虚状态时间。2.使用多线程很重要的考量点是线程切换的开销,当采用非公平锁时,当1个线程请求获取同步状态,然后释放同步状态,所以刚释放锁的线程此刻再次获取同步状态的概率就变得非常大,所以就减少了线程的开销。为什么会有公平锁/非公平锁的设计?原创 2022-12-26 20:36:41 · 118 阅读 · 0 评论 -
【强制】高并发时,同步调用应该去考量锁的性能损耗。能用无锁数据结构,就不要用锁;能 锁区块,就不要锁整个方法体;能用对象锁,就不要用类锁。
【强制】高并发时,同步调用应该去考量锁的性能损耗。能用无锁数据结构,就不要用锁;能 锁区块,就不要锁整个方法体;能用对象锁,就不要用类锁。说明:尽可能使加锁的代码块工作量尽可能的小,避免在锁代码块中调用 RPC方法。锁的是实例对象本身,就是new出来的具体实例对象本身。锁的是类对象本身,就是唯一模板class。原创 2022-12-26 20:28:26 · 495 阅读 · 0 评论 -
List集合线程不安全
List集合线程不安全Exception in thread "64" java.util.ConcurrentModificationException运行结果: 查看ArrayList 添加方法源码解决方案3种第一种 VectorList list = new Vector();第二种 Collections解决List list = Collections.synchronizedList(new ArrayList());第三种CopyOnWrit原创 2022-12-24 11:23:57 · 156 阅读 · 0 评论 -
多线程编程步骤
4. 防止虚假唤醒问题 (wait()方法要放在循环里)3. 创建多个线程,调用资源类的操作方法。原创 2022-12-24 10:08:30 · 144 阅读 · 0 评论