Java并发编程
文章平均质量分 94
wanger61
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
线程池源码分析
线程池中有一个interruptIdleWorkers() ,该方法会中断线程池中的空闲线程(没有在执行任务而是阻塞在getTask方法中),可以看到该方法在中断线程前会先去尝试获取worker的lock,如果该worker正在执行任务那么就会被上锁,进而不会被该方法中断。可以看到进入回收方法后,加锁地在 workers(一个存放Workers的HashSet)中移除该Worker,从而完成线程的回收。上面启动了 Worker 内部的线程,线程启动后会去调用 Worker 的 run()方法。原创 2022-08-24 16:58:49 · 405 阅读 · 0 评论 -
Java多线程知识点总结
一. 多线程概述 锁有什么作用?有哪些分类? ①Java中的锁主要用于保障多并发情况下数据的一致性,线程必须先获取锁才能进行操作,可以保证数据的安全。 ②从乐观和悲观的角度可以分为乐观锁和悲观锁。 ③从获取资源的公平性可以分为公平锁和非公平锁。 ④从是否共享资源的角度可以分为共享锁和排它锁。 ⑤从锁的状态角度可分为偏向锁、轻量级锁和重量级锁。 乐观锁和悲观锁 ①乐观锁采用乐观的思想处理数据,在每次读取数据时都认为别人不会修改该数据,所以不会上锁。但在更新时会判断在此期间别人有没有更新该数据。Java中的乐观原创 2020-10-18 16:33:31 · 703 阅读 · 1 评论 -
JUC源码详解
AQS与独占获取:https://www.javadoop.com/post/AbstractQueuedSynchronizer#toc4 公平锁非公平锁与Condition: https://www.javadoop.com/post/AbstractQueuedSynchronizer-2原创 2020-10-09 20:34:34 · 432 阅读 · 0 评论 -
final关键字的内存语义
https://www.cnblogs.com/senlinyang/p/7875468.html原创 2020-10-08 20:12:06 · 150 阅读 · 0 评论 -
既然synchronized是"万能"的,为什么还需要volatile呢?
01 synchronized的问题 我们都知道synchronized其实是一种加锁机制,那么既然是锁,天然就具备以下几个缺点: 1.1 有性能损耗 虽然在JDK 1.6中对synchronized做了很多优化,如适应性自旋、锁消除、锁粗化、轻量级锁和偏向锁等,但是他毕竟还是一种锁。 以上这几种优化,都是尽量想办法避免对Monitor进行加锁,但是,并不是所有情况都可以优化的,况且就算是经过优化...转载 2020-02-11 20:22:29 · 698 阅读 · 0 评论
分享