并发编程
文章平均质量分 57
并发编程专栏旨在帮助你深入理解并发编程的概念、原则和技术,以及如何在Java应用程序中应用它们。通过学习并发编程,你将能够编写高效、可扩展和稳定的多线程应用程序
攻城狮修行之旅
这个作者很懒,什么都没留下…
展开
-
6、ThreadLocal 详解
JVM 利用设置 ThreadLocalMap 的 Key 为弱引用,来避免内存泄露。JVM 利用调用 remove、get、set 方法的时候,回收弱引用。当 ThreadLocal 存储很多 Key 为 null 的 Entry 的时候,而不再去调用 remove、get、set 方法,那么将导致内存泄漏。使用线程池+ ThreadLocal 时要小心,因为这种情况下,线程是一直在不断的重复运行的,从而也就造成了 value 可能造成累积的情况。原创 2023-07-08 10:28:05 · 170 阅读 · 0 评论 -
5、JMM和并发三大特性
在JSR-133之前的旧Java内存模型中,虽然不允许volatile变量之间重排序,但旧的Java。64位的long型和double型变量,只要它是volatile变量,对该变量的读/写就具有原子性。变量与普通变量的重排序,确保volatile的写-读和锁的释放-获取具有相同的内存语义。器指令进行重排序,使机器指令能更符合CPU的执行特性,最大限度的发挥机器性能。的结果相等,那么指令的执行顺序可以与代码顺序不一致,此过程叫指令的重排序。思考:下面的Java程序中x和y的最终结果是什么?原创 2023-07-02 20:07:30 · 145 阅读 · 0 评论 -
4、等待通知机制
这里面有什么问题呢?原创 2023-07-01 16:54:56 · 134 阅读 · 0 评论 -
3、深入学习 Java 的线程
为什么用户线程又被称为协程呢?我们知道,内核线程的切换开销是来自于保护和恢复现场的成本, 那如果改为采用用户线程, 这部分开销就能够省略掉吗?答案还是“不能”。但是,一旦把保护、恢复现场及调度的工作从操作系统交到程序员手上,则可以通过很多手段来缩减这些开销。由于最初多数的用户线程是被设计成协同式调度(Cooperative Scheduling)的,所以它有了一个别名——“协程”(Coroutine) 完整地做调用栈的保护、恢。原创 2023-07-01 16:17:14 · 85 阅读 · 0 评论 -
2、认识 Java 里的线程
注意:处于死锁状态的线程无法被中断。原创 2023-07-01 16:18:39 · 108 阅读 · 0 评论 -
1、多线程编程的基本概念和优势
在正式学习 Java 的并发编程之前,还有几个并发编程的基础概念我们需要熟悉和学习。思考:上面例子中为什么多线程对共享变量的操作存在可见性问题?原创 2023-07-01 16:00:01 · 113 阅读 · 0 评论