多线程
写代码的Z
这个作者很懒,什么都没留下…
展开
-
关于ThreadLocal与ThreadLocalMap
ThreadLocal的一些说明:ThreadLocal是一个泛型类,用于在线程中定义局部变量。Thread对象里面有一个默认修饰符修饰的ThreadLocalMap对象变量(ThreadLocalMap是ThreadLocal类里面一个默认修饰符修饰(本类和同包的类可以访问)的内部类)。ThreadLocal本身并不存储值,它只是在线程的ThreadLocalMap变量中作为一个key...原创 2018-10-26 11:26:03 · 2877 阅读 · 1 评论 -
多线程——CyclicBarrier循环屏障
概述CyclicBarrier是一个同步工具类,可以翻译成循环屏障,也叫障碍器或同步屏障。CyclicBarrier内部有一个计数器count,调用障碍器的await方法会使计数器count的值减一,当计数器count的值为0时,表明调用了await方法线程已经达到了设置的数量。当障碍器的屏障被打破后,会重置计数器,因此叫做循环屏障。比较CountDownLatch和CyclicB...原创 2018-11-01 22:36:04 · 897 阅读 · 0 评论 -
volatile的实现原理
相关的概念:1.可见性:当一个线程修改了共享变量后,另一个线程能够马上得到修改后的变量。2.原子性:一个操作或多个操作要么全部执行,要么都不执行,并且执行的过程不会被任何因素中断。3.有序性:Java内存模型中,允许编译器和处理器对指令进行重排序,但是重排序过程不会影响到单线程程序的执行,却会影响到多线程并发执行的正确性。volatile基础原理:volatile修饰的变量,在...原创 2018-10-31 10:00:50 · 192 阅读 · 0 评论 -
实现显式锁的关键类——AbstractQueuedSynchronizer队列同步器(AQS)
概述同步器内部其实就是用双向链表来存储线程,关于锁的相关操作都可以通过操作这个链表实现。同步器依赖内部的同步队列(FIFO)来完成同步状态的管理,当前线程获取同步状态失败时,同步器会将当前线程以及等待状态等信息构造成一个节点并将其加入到同步队列,同时阻塞当前线程。首节点是获取同步状态成功的节点,同步状态释放时,首节点会唤醒后继节点中的线程,并可能让其获取同步状态。同步器拥有的头节点(h...原创 2018-11-15 14:03:17 · 532 阅读 · 0 评论 -
线程的同步状态
线程的各个流程之间转换的关系图:说明 :线程的同步状态主要包含5种状态的转换:1. 初始状态(New) : 也就是线程对象被新建后就进入初始状态。例如,Thread thread = new Thread()。2. 就绪状态(Runnable): 也被称为“可执行状态”。线程对象被创建后,调用该对象的start()方法启动了线程。此时线程就进入到了就绪状态。注意...原创 2018-11-08 17:29:26 · 639 阅读 · 0 评论 -
显式锁Lock——普通锁ReentrantLock解析
显式锁Lock与隐式锁synchronized比较:可重入锁:都是可重入锁 可中断锁:隐式锁不可中断,而显示锁可以中断。 公平锁:隐式锁不是公平锁,显示锁在new一个对象的时候可以设置是否生成公平锁,如:new ReentrantLock(true); 读写锁:显式锁的读写锁,可以做到读读、读写不互斥,只有写写互斥,这样可以提升多线程时的资源使用率。显式锁的优势:显示锁的本质是通过...原创 2018-11-21 21:36:27 · 352 阅读 · 0 评论 -
读写锁ReentrantReadWriteLock解析
概要读写锁中,读与写、写与写是互斥的,而 读与读 不是互斥的,所以读写锁在执行写操作的线程没有获得锁的情况下,执行读操作的线程可以多个线程都拥有锁。因此读写锁在存在大量读操作的情况下比普通锁的效率要好。读写锁的读锁的实现主要依赖于AQS的共享模式,而写锁依赖于独占模式。简要说明读写锁的实现,主要依赖于ReentrantReadWriteLock中的内部类:Sync类是读写锁同步控制...原创 2018-11-27 09:34:06 · 230 阅读 · 0 评论 -
AQS内部类ConditionObject解析
概述ConditionObject是AQS中定义的内部类,实现了Condition接口,ConditionObject是基于Lock实现的,在其内部通过链表来维护等待队列(条件队列)。Contidion必须在lock的同步控制块中使用,调用Condition的signal方法并不代表线程可以马上执行,signal方法的作用是将线程所在的节点从等待队列中移除,然后加入到同步队列中,线程的执行始终...原创 2018-11-27 20:14:17 · 3283 阅读 · 6 评论 -
关于线程池写的好的文章
https://www.cnblogs.com/dolphin0520/p/3932921.html转载 2019-06-13 17:24:05 · 123 阅读 · 0 评论