Java多线程问题合集

线程池

深入理解Java线程池:ThreadPoolExecutor:https://www.cnblogs.com/liuzhihu/p/8177371.html
Java四种线程池:https://www.cnblogs.com/baizhanshi/p/5469948.html
Java线程池,shutdown、awaitTermination、shutdownNow的作用与区别:https://blog.csdn.net/u010002184/article/details/79188233
CompletionService简介、原理以及小案例:https://blog.csdn.net/qq_36898043/article/details/79733124
任务的批量提交invokeAll两种方法的区别:https://blog.csdn.net/w1014074794/article/details/51098746

ThreadLoacl

ThreadLocal用法详解和原理:https://www.cnblogs.com/coshaho/p/5127135.html
关于ThreadLocal的理解:https://www.jianshu.com/p/5c18d3ea6c58

JMM内存模型

全面理解Java内存模型(JMM)及volatile关键字:https://blog.csdn.net/javazejian/article/details/72772461
关于synchronized是否能保证可见性:https://blog.csdn.net/taotao4/article/details/43964769
volatile可以保证可见性和有序性(禁止局部指令重排),无法保证原子性(但可以保证long、double 8位字节操作的原子性)
Java中volatile如何保证long和double的原子性操作:https://agilestyle.iteye.com/blog/2359969
Java里面volatile关键字修饰引用变量的陷阱:https://blog.csdn.net/u010454030/article/details/80800098

volatile的实现原理(lock指令和内存屏障):https://www.jianshu.com/p/e34469924714

Java锁是如何保证数据可见性的:https://blog.csdn.net/tomli2017/article/details/73263949

笔者实验发现,Lock可以保证Lock范围里共享变量的可见性。知乎网站佐证:https://www.zhihu.com/question/41016480

只对同一个锁保证可见性

浅谈偏向锁、轻量级锁、重量级锁:https://www.jianshu.com/p/36eedeb3f912
Java中的锁分类:https://www.cnblogs.com/qifengshi/p/6831055.html

final(保证安全发布,防止this逃逸)

你以为你真的了解final吗?:https://www.jianshu.com/p/1f4b0f98cbf1

LockSupport

Java的LockSupport.park()实现分析:https://blog.csdn.net/hengyunabc/article/details/28126139
LockSupport详解 | Java并发编程:https://15838341661-139-com.iteye.com/blog/2239748

Atomic包

AtomicReference compareAndSwap是比较对象的地址吗:https://segmentfault.com/q/1010000008287803?_ea=1631295

笔者实验发现,只有同一个对象才能比较CAS成功,不同对象的成员变量内容相等也会CAS失败。也就是说可以通过set方法改变object的值(基本类型比较的则是内容)
闭锁CountDownLatch

什么时候使用CountDownLatch:http://www.importnew.com/15731.html

栅栏CyclicBarrier

J.U.C之并发工具类:CyclicBarrier:https://blog.csdn.net/chenssy/article/details/70160595

interrupte

理解java线程的中断(interrupt):https://blog.csdn.net/canot/article/details/51087772

抛出interrupteException后会设置interupte状态为false

处理不可中断阻塞: https://www.cnblogs.com/hanyuan/archive/2013/03/10/2952687.html

Timer与TimerTask

Timer与TimerTask的真正原理&使用介绍:https://blog.csdn.net/xieyuooo/article/details/8607220
TimerTask.cancel() 与 Timer.cancel() 的区别:https://blog.csdn.net/ShenDaiSun/article/details/86565311

FetureTask

揭密FutureTask:https://www.cnblogs.com/maypattis/p/5827671.html

Thread

不使用stop方法停止线程(stop会释放sync锁):https://www.cnblogs.com/DreamDrive/p/5623804.html

readWriteLock

公平锁性能比非公平锁差,因为公平锁的阻塞和唤醒多。(不支持锁升级、只支持锁降级)

JVM源码分析之Object.wait/notify实现:https://www.jianshu.com/p/f4454164c017

线程池的defaulthreadfactory会设置工作线程为非守护进程,所以main不会退出,除非线程过期或者调用shutdown。

生产者消费者

1、使用lock和两个condition;2、使用2个semaphore和一个lock
SynchronousQueue:https://www.cnblogs.com/tong-yuan/p/SynchronousQueue.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值