![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
多线程
请叫我猿叔叔
慢慢积累 向着架构进发
展开
-
多线程系列(七)------ synchronized关键字简单使用以及可重入性
一、简介 本文主要介绍synchronize的简单使用以及一些判断锁是否可以并发的例子。最后又分析了一下synchronize的可重入特性。 本文主要参考: skywang12345博主的文章Java多线程系列--“基础篇”04之 synchronized关键字 ...原创 2019-03-29 17:09:12 · 257 阅读 · 0 评论 -
多线程系列(五)------ 死锁案例以及检测方法
一、简介 在使用多线程的时候最头疼的问题就是死锁了,不好排查。通过该篇文章,你可以了解常见的死锁案例,引起原因,检测死锁的常用方法以及避免死锁的写法的注意事项。 注:本文主要参考博主wolfcode_cn的文章理解Java死锁之死锁检测 以及个人完善。 尊重原创。二、死锁2.1 常见引起原因 常见于使用锁嵌套 T...原创 2019-04-01 11:38:26 · 1090 阅读 · 0 评论 -
多线程系列(八)------ synchronized关键字原理以及锁优化
一、简介 本文主要讲解synchronize的底层实现原理以及虚拟机对synchronize的优化,包含锁优化如偏向锁、轻量级锁、自旋锁、重量级索以及锁消除和锁粗化。 本文主要参考: zejian_博主的文章深入理解Java并发之synchronized实现原理 ...原创 2019-04-01 17:47:55 · 369 阅读 · 0 评论 -
多线程系列(一)------ 线程的状态及转换
一、简介本文主要介绍线程的六大状态及其转换; 操作系统中线程的状态如下: NEW, READY,RUNNING, BLOCKED(包含了JAVA中的BLOCKED, WAITING,TIMED_WAITING), DIED; java中线程的状态如下: java.lang.Thread类中有一个关于状态的枚举State,里面注明了 NEW、RUNNABLE、BLOCKED、WAI...原创 2019-03-28 17:29:24 · 398 阅读 · 0 评论 -
多线程系列(九)------ volatile相关 TODO
一、简介二、基础原理三、对单例的支持3.1 例子/** * @author qjwyss * @date 2019/4/11 * @description */public class Single { private volatile static Single instance; private Single() { } pub...原创 2019-04-11 12:14:14 · 119 阅读 · 0 评论 -
多线程系列(三)------ 多线程常用方法
一、简介 本文主要介绍Obejct类的wait, notify, notifyAll, Thread类的sleep, join, yield, setPrority, isDaemon 等相关方法的使用细节。二、常用方法2.1 wait2.1.1 使用细节使当前线程进入阻塞状态; 释放锁;2.1.2 案例略2.2 notify2.2.1 使用...原创 2019-04-08 17:02:05 · 186 阅读 · 0 评论 -
多线程系列(二)------ 线程的创建方式
一、简介 多线程创建方式有三种,一种是继成Thread类;一种是实现Runnable接口;一种是使用Callable接口和Future接口组合,它和runnable接口方式的区别是前者的run方法返回VOID,后者可以返回线程中存储的值;一般采用线程池来创建线程,这个在后续写线程池的时候再写。二、创建方式2.1 继承Thread类2.1.0 思路...原创 2019-03-29 11:56:09 · 174 阅读 · 0 评论 -
多线程系列(四)------ 终止线程的方式
一、简介二、终止线程的方式三、多线程系列链接多线程系列(一)------ 线程的状态及转换 多线程系列(二)------ 线程的创建方式 多线程系列(三)------ 线程常用方法 多线程系列(四)------ 终止线程的方式 多线程系列(五)------ 死锁案例以及检测方法 多线程系列(六)------ 生产者消费者案例 多线程系列(七)------ s...原创 2019-04-15 10:39:51 · 123 阅读 · 0 评论 -
线程池系列(一)------------线程池简介
一、简介 线程池主要解决了俩个问题:一是避免了频繁创建销毁线程所带来的开销,达到了线程复用的目的;二是线程池提供了一种资源限制和管理的手段,用户可以通过一些参数来定制化线程;二、线程池状态2.1 原子变量ctl2.1.1 ThreadPoolExecutor源码public class ThreadPoolExecutor extends Abstra...原创 2019-07-11 22:26:16 · 397 阅读 · 0 评论