多线程
文章平均质量分 93
zzqtty
这个作者很懒,什么都没留下…
展开
-
代码理解java多线程 (三) - JDK工具篇(7)- Java 8 Stream并行计算原理 计划任务
目录第十九章 Java 8 Stream并行计算原理19.1 Java 8 Stream简介19.2 Stream单线程串行计算19.3 Stream多线程并行计算19.4 从源码看Stream并行计算原理19.5 Stream并行计算的性能提升第二十章 计划任务20.1 使用案例20.2 类结构20.3 主要方法介绍20.3.1 schedule20.3.2 scheduledAtFixedRate20.3.3 scheduledAtFixedDelay原创 2021-04-17 12:49:54 · 318 阅读 · 0 评论 -
代码理解java多线程 (三) - JDK工具篇(6)- 通信工具类 & Fork/Join框架
目录第十七章 通信工具类17.1 Semaphore17.1.1 Semaphore介绍17.1.2 Semaphore案例17.1.3 Semaphore原理17.2 Exchanger17.3 CountDownLatch17.3.1 CountDownLatch介绍17.3.2 CountDownLatch案例17.3.3 CountDownLatch原理17.4 CyclicBarrier17.4.1 CyclicBarrier介绍17.4.2 C原创 2021-04-12 23:13:40 · 304 阅读 · 1 评论 -
代码理解java多线程 (三) - JDK工具篇(3)- 锁接口和类
目录第十四章 锁接口和类14.1 synchronized的不足之处14.2 锁的几种分类14.2.1 可重入锁和非可重入锁14.2.2 公平锁与非公平锁14.2.3 读写锁和排它锁14.3 JDK中有关锁的一些接口和类14.3.1 抽象类AQS/AQLS/AOS14.3.2 接口Condition/Lock/ReadWriteLock14.3.3 ReentrantLock14.3.4 ReentrantReadWriteLock14.3.5 Stamped原创 2021-04-09 18:32:20 · 99 阅读 · 0 评论 -
代码理解java多线程 (三) - JDK工具篇(2)- 阻塞队列
第十三章 阻塞队列13.1 阻塞队列的由来我们假设一种场景,生产者一直生产资源,消费者一直消费资源,资源存储在一个缓冲池中,生产者将生产的资源存进缓冲池中,消费者从缓冲池中拿到资源进行消费,这就是大名鼎鼎的生产者-消费者模式。该模式能够简化开发过程,一方面消除了生产者类与消费者类之间的代码依赖性,另一方面将生产数据的过程与使用数据的过程解耦简化负载。我们自己coding实现这个模式的时候,因为需要让多个线程操作共享变量(即资源),所以很容易引发线程安全问题,造成重复消费和死锁,尤其是生产者和原创 2021-04-09 18:11:08 · 142 阅读 · 0 评论 -
代码理解java多线程 (三) - JDK工具篇(1)
目录第十二章 线程池原理12.1 为什么要使用线程池12.2 线程池的原理12.2.1 ThreadPoolExecutor提供的构造方法12.2.2 ThreadPoolExecutor的策略12.2.3 线程池主要的任务处理流程12.2.4 ThreadPoolExecutor如何做到线程复用的?12.3 四种常见的线程池12.3.1 newCachedThreadPool12.3.2 newFixedThreadPool12.3.3 newSingleThr原创 2021-04-09 17:43:07 · 115 阅读 · 0 评论 -
代码理解java多线程 (二) - 原理篇(2)
目录第八章 volatile8.1 几个基本概念8.1.1 内存可见性8.1.2 重排序8.1.3 happens-before规则8.2 volatile的内存语义8.2.1 内存可见性8.2.1 禁止重排序8.3 volatile的用途第九章 synchronized与锁9.1 Synchronized关键字9.2 几种锁9.2.1 Java对象头9.2.2 偏向锁9.2.3 轻量级锁9.2.4 重量级锁9.2.5 总结锁的升级流程原创 2021-04-09 17:23:40 · 153 阅读 · 0 评论 -
代码理解java多线程 (二) - 原理篇(1)
目录第六章 Java内存模型基础知识6.1 并发编程模型的两个关键问题6.2 Java内存模型的抽象结构6.2.1 运行时内存的划分6.2.2 既然堆是共享的,为什么在堆中会有内存不可见问题?6.2.3 JMM与Java内存区域划分的区别与联系第七章 重排序与happens-before7.1 什么是重排序?7.2 顺序一致性模型与JMM的保证7.2.1 数据竞争与顺序一致性7.2.2 顺序一致性模型7.2.3 JMM中同步程序的顺序一致性效果7.2.4原创 2021-04-06 21:50:43 · 85 阅读 · 0 评论 -
代码理解java多线程 (一) - 基础篇(2)
目录第四章 Java线程的状态及主要转化方法4.1 操作系统中的线程状态转换4.2 Java线程的6个状态4.2.1 NEW4.2.2 RUNNABLE4.2.3 BLOCKED4.2.4 WAITING4.2.5 TIMED_WAITING4.2.6 TERMINATED4.3 线程状态的转换4.3.1 BLOCKED与RUNNABLE状态的转换4.3.2 WAITING状态与RUNNABLE状态的转换4.3.3 TIMED_WAITING与RUN.原创 2021-04-05 22:55:38 · 104 阅读 · 0 评论 -
代码理解java多线程 (一) - 基础篇(1)
第一章 进程与线程的基本概念1.1 进程产生的背景最初的计算机只能接受一些特定的指令,用户每输入一个指令,计算机就做出一个操作。当用户在思考或者输入时,计算机就在等待。这样效率非常低下,在很多时候,计算机都处在等待状态。批处理操作系统后来有了批处理操作系统,把一系列需要操作的指令写下来,形成一个清单,一次性交给计算机。用户将多个需要执行的程序写在磁带上,然后交由计算机去读取并逐个执行这些程序,并将输出结果写在另一个磁带上。批处理操作系统在一定程度上提高了计算机的效率,但是由于批处理操作系原创 2021-04-05 22:05:01 · 309 阅读 · 1 评论 -
多线程 - 练习题(二)
第四章为何应该避免使用线程组竞态条件使得大多数方法废弃package thread;import java.util.Timer;import java.util.TimerTask;public class t201909101 { static volatile int i = 1; public static void main(Stri...原创 2019-09-10 19:10:01 · 117 阅读 · 0 评论 -
多线程 - 练习题(一)
第一章节线程的定义一条在程序代码中独立执行的路径给出runnable的定义一段封装在对象中的代码序列,它的类实现了runnable接口thread类和runnable接口完成了什么类thread提供了一个底层操作系统线程架构的统一。runnable接口为关联thread对象的线程提供执行代码。创建一个runnable对象的两种方式创建一个实现了run...原创 2019-09-10 13:57:58 · 291 阅读 · 0 评论 -
多线程 - 选择
原创 2019-09-03 13:58:35 · 123 阅读 · 0 评论 -
代码理解多线程(三)
非多线程安全容器ArrayListpackage test19218;import java.util.ArrayList;import java.util.Collections;import java.util.HashMap;import java.util.Iterator;import java.util.List;import java.util.Map;impo...原创 2019-02-20 11:06:37 · 133 阅读 · 0 评论 -
代码理解多线程(二)
volatile 到底有什么用?package test19218;import java.util.ArrayList;import java.util.List;public class ListAdd1 { //变量 private static List list = new ArrayList(); ...原创 2019-02-19 14:39:03 · 196 阅读 · 0 评论 -
代码理解多线程(一)
多线程访问会有什么问题?? public class TestMyThread extends Thread{ //共享变量 private int a = 5; //重写run方法 @Override public void run(){ a--; System.ou...原创 2019-02-18 17:54:13 · 200 阅读 · 0 评论