Java并发编程
山主_33
微信搜:山主
展开
-
Java并发编程读书笔记——并发编程的简述
这是读这本书的第二遍,所以会在前面记录一些后面可能比较重要的点,也希望记录一下所学,能学到第一遍所不能理解和懵懂的东西...1.上下文切换: 计算机单核处理器也支持多线程,是因为CPU通过给每一个线程分配CPU的时间片,即每个线程占用CPU的时间,这个时间非常短,所以会让我们以为是多个线程同时执行的。 当一个任务执行完当前的时间片,会保存当前的状态,等下一次切换回来的时候加载这个状态,...原创 2018-03-19 20:57:34 · 541 阅读 · 0 评论 -
Java并发编程读书笔记——CountDownLatch、CyclicBarrier、Semaphore
一、CountDownLatch: CountDownLatch允许一个或者多个线程等待其他线程完成操作。 假设现在需要解析一个Excel里的多个sheet数据,此时可以使用多线程。等到所有sheet都解析完成后,需要提示解析完成。最简单的方法是使用join()方法:public class JoinCountDownLatchTest { public sta...原创 2018-03-29 22:45:51 · 322 阅读 · 0 评论 -
Java并发编程读书笔记——volatile、synchronized和原子操作(CAS机制详解)
一、volatilevolatile是轻量级的synchronized,它在多处理器开发中保证了共享变量的可见性。1.当一个共享变量被volatile修饰时,它实现可见性的原理如下:当对被volatile修饰的变量进行写操作时,Lock前缀指令会做两件事情: (1).将当前处理器缓存行(工作内存)的数据写回系统内存(主内存);——store屏障指令 (2).这个写回内存的操作会使其他C...原创 2018-03-20 23:54:36 · 716 阅读 · 0 评论 -
Java并发编程读书笔记——ThreadLocal
1. ThreadLocal定义:线程变量,是一个以ThreadLocal对象为键,任意对象为值得存储结构。2. 作用:提供线程内得局部变量,在线程的生命周期内起作用,在本线程内随时可取,隔离其它的线程。下面写了一个简单的例子:/** * 是一个以ThreadLocal对象为键,任意对象为值得存储结构; * 一个线程可以根据一个ThreadLocal对象查询到绑定在这个线程上得一个值 */ ...原创 2018-03-25 13:08:50 · 302 阅读 · 0 评论 -
Java并发编程读书笔记——Java中的锁(Lock)以及队列同步器(AbstactQueuedSynchronizer)
一、Lock接口: 在Lock接口出现之前,Java靠synchronized关键字实现锁的功能。但是synchronized关键字将锁的获取与释放固化了,显得并没有这么灵活。在jdk1.5以后,新增加了Lock接口。lock主要具备synchronized关键字锁不具备的以下同步特性: (1).尝试非阻塞地获取锁:tryLock(); ...原创 2018-03-25 23:03:02 · 334 阅读 · 0 评论 -
Java并发编程读书笔记——Java内存模型(包括并发中的一些内存语义)
1.并发编程模型的两个关键问题:线程之间的通信和同步。 线程之间的通信有两种:共享内存和消息传递。 同步是指程序中用于控制不同线程间操作发生相对顺序的机制。 Java的并发采用的是共享内存模型,下面是Java内存模型的抽象结构:JMM定义了线程和主内存之间的抽象关系:线程之间的共享变量存储在主内存中,每个线程有一个本地内存,本地内存存储了该线程以读/写共享变量的副本。本地内存是一...原创 2018-03-21 23:23:32 · 260 阅读 · 0 评论 -
Java并发编程读书笔记——解析Java中线程池的原理
一、概述:Java中的线程池是运用场景最多的并发框架。在开发过程中,合理地使用线程池能够带来3个好处: 1).降低资源消耗。通过重复利用已经创建的线程降低线程创建和销毁造成的消耗。 2).提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。 3).提高线程的可管理性。线程是稀缺资源,如果无限制地创建,不仅会消耗系统资源,还会降低系统地稳定性...原创 2018-04-05 16:24:11 · 244 阅读 · 0 评论