java并发编程
scouttttttttttt
仅以此来记录我的IT学习历程
展开
-
不会还有人不会synchronized吧?
每个锁关联一个线程持有者和一个计数器。当计数器为0时表示该锁没有被任何线程持有,那么任何线程都都可能获得该锁而调用相应方法。当一个线程请求成功后,JVM会记下持有锁的线程,并将计数器计为1。此时其他线程请求该锁,则必须等待。而该持有锁的线程如果再次请求这个锁,就可以再次拿到这个锁,同时计数器会递增。当线程退出一个synchronized方法/块时,计数器会递减,如果计数器为0则释放该锁。...原创 2019-09-17 20:16:45 · 349 阅读 · 0 评论 -
java中AQS详解
AQS:AbstractQueuedSynchronizer(抽象队列同步器),AQS提供了一种实现阻塞锁和一系列依赖FIFO等待队列的同步器的框架,了解了AQS基本就了解了java同步机制。AQS源码解读1 AQS的设计模式:模板方法模式。2 AQS中方法:模板(框架)方法:独占式获取同步状态方法:accquire(忽略中断)acquirelnterruptibly(能响应中断...原创 2020-01-04 22:48:51 · 584 阅读 · 0 评论 -
ThreadLocal源码解析
ThreadLocal类维持线程封闭性除了Ad-hoc封闭和栈封闭,更规范的方法是使用ThreadLocal,这个类是java lang包下的一个类。他能使线程中的某个值与保存值的对象关联起来。ThreadLocal提供了get set等访问接口或方法,这些方法为每个使用该变量的线程都存有一份独立地副本,因此get总能返回由当前执行线程在调用set时设置的最新值。源码分析set方法: /...转载 2019-10-22 20:17:21 · 199 阅读 · 0 评论