多线程
-
CountDownLatch及CyclicBarrier源码分析
之前写的一篇博客JUC包下的线程协作计数CountDownLatch及CyclicBarrier只是介绍了一下这两个工具类的用法,并没有深入探究源码,然而实现方法也比较简单,所以合...
-
ThreadPoolExecutor源码分析-线程池如何实现线程复用?
线程的复用问题 在开始看线程池的源码之前,先来看这么一个问题: 一个Thread对象可以重复地调用start()方法吗? 试试就知道了: @Test public void tes...
-
线程内部的run方法可以向外抛出异常吗?
提出问题 线程的run方法向外可以抛出异常吗,或者能被主线程捕获异常吗?比如下面这段代码: public static void main(String[] args) { try...
-
JDK8新增高效原子累加器LongAdder源码分析
很久以前写过CAS应用之JUC下的原子类,但是LongAdder这个类没有去看,只是给了一个其他博客的参考链接。今天就自己来分析一下。 AtomicLong的问题和LongAdde...
-
Random在多线程下的问题以及ThreadLocalRandom类分析
Ramdom在多线程环境下的问题 首先我们看一下Random类的nextInt源码: //产生[0,bound)的随机数 public int nextInt(int bound)...
-
CopyOnWriteArrayList源码分析
总结 总结放前面防止太长不看 CopyOnWriteArrayList是一个线程安全、并且在读操作时无锁的List实现。 CopyOnWriteArrayList内部通过volat...
-
遗留线程安全类Vector和HashTable简要源码分析
总结 总结放前面防止太长不看 Vector Vector就是使用synchronized限制线程安全的一个List实现。 Vector是基于数组实现的,默认初始容量是10,在构造的...
-
阻塞队列BlockingQueue详解
阻塞队列是生产者消费者模式的经典体现。 我们在曾在Java线程池详解中自己实现过一个阻塞队列,这篇文章我们来研究一下JDK中的阻塞队列: BlockingQueue接口主要方法 抛...
-
ThreadLocal源码分析和相关理解
总结 总结放前面防止太长不看: 每个线程都有一个threadLocals字段,是一个ThreadLocalMap的实例,所有的ThreadLocal代表的线程私有数据都存放在这里面...
-
JUC包下的线程协作计数CountDownLatch及CyclicBarrier
CountDownLatch 概述 用来进行线程同步协作,等待所有线程完成倒计时。 其中构造参数用来初始化等待计数值,await() 用来等待计数归零,countDown() 用来...