
并发编程
liujiazhong_pro
慷慨一诺拔剑起,悲歌热血岁月凋
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Java线程池的理解与使用
简介线程的创建需要开辟虚拟机栈、本地方法栈、程序计数器等线程私有的内存空间,在线程销毁时需要回收这些系统资源。频繁地创建和销毁线程会浪费大量的系统资源,增加并发编程风险,而且当服务器负载过大的时候,如何让新的线程等待或者友好地拒绝服务?这是线程自身无法解决的。所以需要通过线程池协调多个线程,并实现主次线程隔离、定时执行、周期执行等任务作用利用线程池管理并复用线程、控制最大并发数等实现任务...原创 2020-02-20 19:55:34 · 198 阅读 · 0 评论 -
Java内存模型中的Happens-Before规则
规则Happens-Before 约束了编译器的优化行为,虽然允许编译器优化,但是要求编译器优化后一定遵守 Happens-Before 规则在 Java 语言里面,Happens-Before 的语义本质上是一种可见性,A Happens-Before B意味着 A 事件对 B 事件来说是可见的,无论 A 事件和 B 事件是否发生在同一个线程里。例如 A 事件发生在线程 1 上,B 事件发...原创 2020-02-19 14:25:51 · 224 阅读 · 0 评论 -
Java线程的生命周期(图)
状态Java线程的6种状态NEW:初始状态RUNNABLE:运行状态BLOCKED:阻塞状态WAITING:无时限等待状态TIMED_WAITING:有时限等待状态TERMINATED:终止状态转换Java线程状态之间的转换...原创 2020-02-18 13:45:48 · 510 阅读 · 0 评论 -
并发编程三大核心问题的诞生:可见性、原子性和有序性
可见性CPU缓存导致的可见性问题描述可见性指的是一个线程对共享变量的修改,另一个线程能够立刻看到。单核心情况下,所有线程操作的都是同一个CPU的缓存,一个线程对缓存的写,对另一个线程来说是可见的,但是在多核心情况下,每颗CPU都有自己的缓存,当线程分别在不同的CPU上操作时,共享变量一致性问题就出现了,这时一个线程对共享变量的操作对另一个线程而言就不具备可见性图解原子性线程切换带来...原创 2020-02-17 11:48:39 · 454 阅读 · 0 评论