![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java多线程
lensen明
knock code with life!!!
展开
-
并发编程之深入浅析Executor框架
目录一、Executor框架简介1.1 Executor框架的两级调度模型1.2 Executor框架的结构1.3 Executor框架二、ThreadPoolExecutor详解二级目录三级目录 本文参考自《并发编程艺术》 在Java中,使用线程来异步执行任务。Java线程的创建与销毁需要一定的开销,如果我们为每一个任务创建一个新线程来执行,这些线程的创建与销毁将消耗大量的计算资源。同时,为每一个任务创建一个新线程来执行,这种策略可能会使处于高负荷状态的应用最终崩溃。 Java的线程既是工作单元,也是执行原创 2020-12-16 18:32:02 · 146 阅读 · 0 评论 -
Java多并发之线程池
目录一、为什么需要线程池二、线程池实现原理三、线程池的使用3.1 线程池的创建3.2 向线程池提交任务3.3 关闭线程池3.4 线程池的监控 本文参考自《并发编程艺术》 一、为什么需要线程池 Java中的线程池是运用场景最多的并发框架,几乎所有需要异步或并发执行任务的程序都可以使用线程池。在开发过程中,合理地使用线程池能够带来3个好处。 降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。 提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。 提高线程的可管理性。线程是稀缺原创 2020-12-16 14:16:53 · 229 阅读 · 0 评论 -
Java多并发之并发容器和框架
目录一、ConcurrentHashMap的实现原理与使用1.1 为什么要使用ConcurrentHashMap1.2 ConcurrentHashMap的锁分段技术1.3 ConcurrentHashMap的结构1.4 ConcurrentHashMap的操作1.4.1 get操作1.4.2 put操作1.4.3 size操作二、ConcurrentLinkedQueue三、Fork/Join框架3.1 什么是Fork/Join框架3.2 工作窃取算法3.3 Fork/Join框架的设计3.4 使用For原创 2020-12-15 15:00:48 · 176 阅读 · 3 评论 -
Java线程安全和非线程安全集合
目录一、ArrayList和vector区别二、HashTable、HashMap、HashSet:1. HashMap:2. HashTable:3. HashSet:三、TreeSet、TreeMap:1. TreeSet:2. TreeMap:四、StringBuffer和StringBulider: java中线程安全和非线程安全的集合 一、ArrayList和vector区别 Vector和ArrayList间唯一的区别就是Vector每个方法都自带同步机制。 例:比如我要往集合里面加一个元素,转载 2020-12-15 08:46:41 · 249 阅读 · 0 评论 -
Java多并发之锁机制
目录一、Lock接口1.1 什么是锁?1.2 Lock对比synchronized关键字及常用API1.3 Lock接口源码二、队列同步器2.1 什么是队列同步器2.2 队列同步器的接口与示例三、重入锁3.1 什么是重入锁3.2 实现重进入四、读写锁4.1 什么是读写锁4.2 读写锁的接口与示例4.3 锁降级五、Condition接口5.1 什么是Condition5.2 代码举例 本文参考Java并发编程艺术 锁机制是Java多并发的核心之一,凡是谈及多并发多线程问题,锁机制是在所难免的,本文将对Java原创 2020-12-14 19:52:03 · 424 阅读 · 0 评论 -
JVM之Java内存模型深入理解
目录一、Java内存模型的基础1.1 Java内存模型(JMM)的抽象结构1.2 源代码到指令序列的重排序二、重排序2.1 数据依赖性2.2 重排序对多线程的影响三、顺序一致性3.1 顺序一致性内存模型3.2 同步程序的顺序一致性效果三、volatile的内存语义3.1 volatile的特性3.2 volatile写-读的内存语义四、final域的内存语义4.1 final域的重排序规则4.2 写final域的重排序规则4.3 读final域的重排序规则4.4 注意五、happens-before规则六、原创 2020-12-11 14:22:25 · 130 阅读 · 1 评论 -
Java多线程之同步问题
Java多线程的重要性不言而喻,在多线程中有一个重要的问题就是共享资源的问题,synchronized关键字就是其中一个,这篇文章简要介绍下synchronized同步代码块的一些知识点。 synchronized的作用 多线程情况下互斥访问共享资源 共享资源的修改及时可见 有效解决重排序问题 synchronized锁对象 synchronized锁对象主要有如下三种: 普通同步方法,锁的是当前的实例对象 静态的同步方法,锁的是当前的Class对象 同步代码块锁的是括号里面的对象 下面以多线程抢票原创 2020-12-09 21:14:20 · 202 阅读 · 1 评论 -
JUC之Java多线程
Java多线程的重要性不言而喻,本篇文章在此做个小结! 进程和线程的区别网上很多,在此就不多做介绍了! 一、什么是多线程 所谓多线程是指一个进程在执行过程中可以产生多个更小的程序单元,这些更小的单元称为线程(操作系统中调度的最小单位元,也叫轻量级进程),这些线程可以同时存在,同时运行,一个进程可能包含多个同时执行的线程。当然这种同时执行并非严格意义上的并行化执行。 二、线程的生命周期及基本状态 在介绍线程之前,先介绍一些线程的基础知识: Java多线程的五种基本状态 新建状态(New):当线程对象对创建后转载 2020-12-07 21:33:01 · 70 阅读 · 0 评论