Java并发编程的艺术笔记
Java并发编程的艺术笔记
「已注销」
这个作者很懒,什么都没留下…
展开
-
Executor框架(Java并发编程的艺术笔记)
Executor框架简介Executor框架的两级调度模型在HotSpot VM的线程模型中,Java线程被一对一映射为本地操作系统线程,Java线程启动时会创建一个本地OS线程;当该Java线程终止时,这个OS线程也会被回收。OS会调度所有线程并将它们分配给可用的CPU。在上层,Java多线程程序通常把应用分解为若干个任务,然后使用用户级的调度器(Excutor框架)将这些任务映射为...原创 2020-03-31 10:46:33 · 218 阅读 · 0 评论 -
Java中的原子操作类 / 并发工具类(Java并发编程的艺术笔记)
等待多线程完成的CountDownLatchCountDownLatch允许一个或多个线程等待其他线程完成操作,简单使用如下。public class Test { public static void main(String[] args) throws InterruptedException{ CountDownLatch clock = new Count...原创 2020-03-30 21:19:38 · 148 阅读 · 0 评论 -
并发容器和框架(Java并发编程的艺术笔记)
ConcurrentHashMap的实现原理与使用线程不安全的HashMap在多线程环境,使用HashMap进行put操作会引起死循环,原因是多线程会导致HashMap的Entry链表形成环状数据结构,进而Entry的next节点永不会空,产生死循环获取Entry。效率低下的HashTableHashTable容器使用synchronized来保证线程安全,但在竞争激烈的情况下,当...原创 2020-03-30 20:03:29 · 112 阅读 · 0 评论 -
线程 / 锁(Java并发编程的艺术笔记)
线程简介什么是线程OS在运行一个程序时,会为其创建一个进程。例如:在启动一个Java程序时,就会创建一个Java程序。现代OS调度的最小单位是线程(轻量级进程)。在一个进程里可以创建多个线程,这些线程拥有各自的计数器,堆栈和局部变量等属性,并且能访问共享的内存变量。处理器在这些线程上高速切换,让人感觉这些线程在同时执行。一个Java程序从main()方法开始执行,执行main()方法...原创 2020-03-30 15:12:24 · 171 阅读 · 0 评论 -
Java内存模型(Java并发编程的艺术笔记)
Java并发模型Java的并发采用的是共享内存模型,在该模型中,线程之间共享程序的公共状态。而线程之间的通信总是隐式进行。java内存模型的抽象结构在Java中,所有实例域,静态域和数组元素(在本文,共享变量指的是这些元素)都存储在堆内存中,堆内存在线程之间共享。而局部变量,方法定义参数和异常处理器参数不会在线程间共享。java线程间的通信有Java内存模型(JMM)控制,JMM决...原创 2020-03-28 10:45:41 · 140 阅读 · 0 评论 -
并发编程的挑战 / 并发机制的底层实现原理 (Java并发编程的艺术笔记)
上下文切换对于单核处理器来说,CPU通过给每个线程分配CPU时间片来实现多线程执行代码机制,因为时间片非常短(一般是几十毫秒),所以CPU通过不停的切换线程执行,使我们感觉多个线程是同时执行的。CPU通过时间片分配算法来循环执行任务,当前任务执行一个时间片后会切换到下一个任务,但在切换前会保存上一个任务的状态。当下次切换到这个任务时,就可以再加载这个任务的状态。任务从保存到再加载的过程是一...原创 2020-03-27 15:23:13 · 117 阅读 · 0 评论