![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java多线程
sky国士无双
不积跬步,无以至千里。
展开
-
《java并发编程的艺术》二 java并发机制的底层实现原理
一、volatile的应用volatile的定义与实现原理volatile的两条实现原则:(1)Lock前缀指令会引起处理器缓存回写到内存。(2)一个处理器的缓存回写到内存会导致其他处理器的缓存无效。如果通过嗅探一个处理器来检测其他处理器打算写内存地址,而这个地址当前处于共享状态,那么正在嗅探的处理器将使它的缓存行无效,在下次访问相同内存地址时,强制执行缓存行填充。二、synchron...原创 2020-02-29 15:57:06 · 83 阅读 · 0 评论 -
《java并发编程的艺术》一并发编程的挑战
一、上下文切换CPU通过时间片分配算法来循环执行任务,当前任务执行一个时间片后会切换到下一个任务,但是,在切换前会保存上一个任务的状态,以便下次切换回这个任务时,可以再加载这个任务的状态,所以任务从保存到再加载的过程就是一次上下文切换。这样的切换是会影响效率的,同样上下文切换也会影响多线程的执行速度。二、多线程一定快吗当并发执行累加操作不超过百万次时,速度会比串行执行累加操作要慢,那么,为...原创 2020-02-28 15:55:22 · 117 阅读 · 0 评论 -
《java多线程核心技术》四 Lock的使用
一、使用ReentrantLock类public class MyService { public Lock lock = new ReentrantLock(); public void testMethod() { lock.lock(); for (int i = 0; i < 5; i++) { System...原创 2020-02-27 21:00:51 · 96 阅读 · 0 评论 -
《java多线程核心技术》三线程间通信
一、等待/通知机制1. 不使用等待/通知机制实现线程间通信使用sleep()和while(true)死循环来实现多个线程间通信package multiThread;import java.util.ArrayList;import java.util.List;/** * @author chengzhengda * @version 1.0 * @date 2020-02...原创 2020-02-25 15:47:54 · 129 阅读 · 0 评论 -
《java多线程核心技术》二 对象及变量的并发访问
一、synchronized同步方法(1)方法内的变量为线程安全非线程安全问题存在于实例变量中,如果是方法内部的私有变量,则不存在非线程安全的问题,所得结论也就是线程安全的了。(2)实例变量非线程安全如果多个线程共同访问一个对象中的实例变量,则有可能出现非线程安全问题。在两个线程访问同一个对象中的同步方法时一定是线程安全的。(3)多个对象多个锁关键字synchronized取得的锁都...原创 2020-02-23 14:46:09 · 75 阅读 · 0 评论 -
《java多线程编程核心技术》一
1. 线程与进程的区别?进程是受操作系统管理的基本运行单元,线程可以理解成进程中独立运行的子任务。举个例子,qq就是一个线程,其中的视频、聊天、传输就是不同的线程。2. 多线程的优势是啥?使用多线程,可以在同一时间内运行多个不同的任务,最大限度的利用cpu的资源。cpu在这些任务间不停的切换,由于切换的速度非常快,给使用者的感觉就是这些任务在同时执行。举个例子,当一个任务A需要执行10s,另...原创 2019-07-21 23:13:15 · 61 阅读 · 0 评论