并发实战
徐传良
日拱一卒
展开
-
第十一章 多线程编程的硬件基础与java内存模型--《java多线程编程实战指南-核心篇》
填补处理器与内存之间的鸿沟:高速缓存为了弥补处理器与主内存处理器能力之间的鸿沟,硬件设计者在主内存和处理器之间引入高速缓存,如下图所示:高速缓存是一种存取速度比主内存大而容量远比主内存小的存储部件,每个处理器都有其高速缓存。引入高速缓存后,处理器在执行内存读、写操作的时候并不直接与主内存打交道,而是通过高速缓存进行的。高速缓存相当于一个由硬件实现的容量极小的散列表,其key是一个内存地址,其值是内存数据的副本或者准备写入内存的数据。从内存结构来看,高速缓存相当于一个拉链散列表,他包含若干桶,每.原创 2020-05-24 11:01:21 · 203 阅读 · 0 评论 -
第九章 java异步编程--《java多线程编程实战指南-核心篇》
java.util.concurrent.Executor接口是对任务执行进行的抽象,Executor接口使得任务的提交方只需要知道它调用Executor.execute方法便可以使指定任务被执行,无需关系任务执行的细节,使得任务的提交能够与任务执行的具体细节解耦,它在一定程度上能够屏蔽任务同步执行与异步执行的差异,一定程度上缩小了同步编程与异步编程的代码编写方式。工具类Executors...原创 2019-12-24 18:53:43 · 247 阅读 · 0 评论 -
第八章 线程管理--《java多线程编程实战指南-核心篇》
线程的未捕获异常与监控jdk1.5引入UncaughtExceptionHandler接口,当线程提前被异常终止,则会回调该接口中的方法,例:package JavaCoreThreadPatten.capter08;import java.util.Random;import java.util.concurrent.ArrayBlockingQueue;import java...原创 2019-12-23 18:49:31 · 156 阅读 · 0 评论 -
第七章 线程的活性故障--《java多线程编程实战指南-核心篇》
线程活性故障是由资源稀缺型或者程序自身的问题和缺陷导致线程一直处于非RUNNABLE状态,或者线程虽然处于RUNNABLE状态但是其要执行的任务却一直无法进展的故障现象。死锁如果两个或者更多的线程因相互等待对方而被永远暂停,那么我们就称这些线程产生了死锁。哲学家就餐问题一个线程在持有一个锁L1的情况下去申请另外一个锁L2,而另外一个线程也在持有一个锁L2的情况下去申请另外一个锁...原创 2019-12-23 12:14:51 · 173 阅读 · 0 评论 -
第六章 保障线程安全的设计技术--《java多线程编程实战指南-核心篇》
栈空间是为线程的执行而准备的一段固定大小的内存空间,每个线程都由其栈空间。栈空间实在线程创建的时候分配的。线程执行一个方法前,java虚拟机会在该线程的栈空间中为这个方法调用创建一个栈帧。栈帧用于存储相应方法的局部变量、返回值等私有数据。无状态对象不含任何实例变量,不包含任何静态变量或者其包含的静态变量都是只读的,是线程安全的。不可变对象是指一经创建其状态就保持不变的对象,也具有线程安全性...原创 2019-12-18 19:21:51 · 141 阅读 · 0 评论 -
第五章 线程间协作--《java多线程编程实战指南-核心篇》
5.1 等待与通知:wait/notifywait()的作用是使其执行线程被暂停,该方法可以用来实现等待;notify()的作用是唤醒一个被暂停的线程,调用该方法可实现通知。由于一个线程只有在持有一个对象的内部锁的情况下才能调用该对象wait方法,因此wait()调用总是放在响应对象所引导的临界区之中。执行someObject.wait()而被暂停的线程称为对象someObject上等...原创 2019-12-17 17:08:27 · 192 阅读 · 2 评论 -
第四章 牛刀小试:玩转线程--《java多线程编程实战-核心篇》
由串行改成并发,需要先找到可并发点。1.基于数据的分割实现并发化;2.基于任务的分割实现并发化;线程所执行的任务按照其消耗的主要资源可划分为CPU密集型任务和I/O密集型任务。线程数的合理性可以根据以下规则设置:1.对于CPU密集型线程,考虑到这类线程执行任务时消耗的主要是处理器资源,我们可以将这类线程的线程数设置为与CPU各项相同或者CPU个数+1.2.对于I/O密集型线...原创 2019-12-16 18:11:16 · 102 阅读 · 0 评论 -
第三章 java线程同步机制 《java多线程编程实战指南-核心篇》
3.1 线程同步机制简介线程同步机制是一套用于协调线程间的数据访问及活动的机制,该机制用于保障线程安全以及实现这些线程的共同目标。线程同步机制包括锁、volatile关键字、final关键字、static关键字以及相关API。3.2 锁概述获得锁(Acquire)、释放锁(Release)锁的持有线程在其获得锁之后和释放锁之前这段时间内所执行的代码被称为临界区。锁有排他锁(...原创 2019-12-16 16:54:53 · 161 阅读 · 0 评论 -
第二章 多线程编程的目标与挑战--《java多线程编程实战指南》
2.1 串行、并发与并行并发就是在一段时间内以交替的方式去完成多个任务,而并行就是以齐头并进的方式去完成多个任务。从硬件的角度来说,在一个处理器一次只能够运行一个线程的情况下,由于处理器可以使用时间片分配的技术来实现在同一段时间内运行多个线程,因此一个处理器就可以实现并发。而并行则需要靠多个处理器在同一时刻各自运行一个线程来实现。多线程编程的实质就是将任务的处理方式由串行改为并发,即实现并...原创 2019-12-12 12:07:41 · 176 阅读 · 0 评论 -
第一章 走进java线程中的世界--《java多线程编程实战指南-核心篇》
1.1 进程、线程和任务进程是程序向操作系统申请资源(如内存空间和文件句柄)的基本单位。线程是进程中可独立执行的最小单位。一个进程可以包含多个线程。同一个进程中的所有线程共享该进程中的资源。线程所要完成的计算就被称为任务,特定的线程总是在执行特定的任务。1.2 多线程编程简述函数式编程中的函数是最基本抽象单元,面向对象编程中的类是最基本抽象单位,多线程编程中以线程为基本抽象单位...原创 2019-12-09 15:40:44 · 138 阅读 · 0 评论 -
第一章 走进java世界中的线程 《java多线程编程实战指南-核心篇》
进程是程序向操作系统申请资源(如内存和文件句柄)的基本单位。线程是进程中可独立执行的最小单位。一个进程可以包含多个线程,同一个进程中的所有线程共享该进程的资源。java平台中的一个线程就是一个对象。增加线程可能会增加单位时间内完成的任务量,即提高程序的计算效率;但也有可能降低程序的计算效率。java线程API简介在java平台创建一个线程就是创建一个Thread类或其子类,run方...原创 2019-11-12 20:27:26 · 164 阅读 · 0 评论 -
Java并发编程:volatile关键字解析
今天在学习设计模式的单例时,为解决单例模式中的多线程问题,遇到一个关键字:bolatitle,没想到背后需要有这么多的知识支撑,特转载过来转载链家:https://baike.baidu.com/item/volatile/10606957?fr=aladdinvolatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往...转载 2018-01-01 17:15:30 · 276 阅读 · 0 评论