与ArrayBlockingQueue不同,LinkedBlockingQueue内部则是使用链表构造的无界阻塞队...[作者空间]
我们再来看ArrayBlockingQueue的源码,它的底层是基于Object[]数组的(数组是内存中一段连续的...[作者空间]
线程池里面最重要的还有个并发容器,即阻塞队列BlockingQueue。BlockingQueue是阻塞队列的接口...[作者空间]
Semaphore(信号量)上定义两种操作: acquire(获取) 和 release(释放)。当一个线程调用a...[作者空间]
Synchronized的原理 前面有讲Synchronized的一些知识,这里先做一下总结,当多个线程同时访问一...[作者空间]
中断Interrupt可被看做一个线程(发起线程)发送给另外一个线程(目标线程)的一种指示,表示发起线程希望目标线...[作者空间]
在前面说到安全发布的时候我们提到了final和static。 如何保证对象安全的发布?1.对象的引用定义成vola...[作者空间]
Lock是显式锁的接口,默认实现是ReentrantLock。 方法摘要 Lock.unlock方法要放在fina...[作者空间]
线程除了上下文切换导致RUNNABLE和非RUNNABLE状态的切换,还有程序自身错误导致线处于RUNNABLE但...[作者空间]
简单回顾下线程的基本概念:线程有两种创建方式,一种是直接new Thread()类,另一种是通过Runnable和...[作者空间]
线程安全问题概括的说表现为3个方面:原子性、可见性和有序性 原子性 原子操作是多线程环境下的一个概念,它是针对共享...[作者空间]
前面说完通过加锁等手段能保证线程的安全性,最后解决方案提到安全发布,那我们就接着看下如何安全的发布对象。先举个栗子...[作者空间]
多个线程共享进程的资源,比如内存地址。同一进程中的线程访问相同的变量,并从同一个堆中分配对象,实现了良好的数据共享...[作者空间]
ReentrantReadWriteLock是可重入锁,支持锁的降级(Downgrade),即一个线程如果持有写锁...[作者空间]
CompletionService:可以使得先完成的任务先被取出,减少了不必要的等待时间。ExecutorComp...[作者空间]
我们都知道用Volatile修饰只能保证内存可见性, 并不保证原子性,JUC提供Atomic类,内部其实也是用Vo...[作者空间]
CyclicBarrier是让一组线程达到某个屏障,被阻塞,一直到组内最后一个线程到达屏障,屏障打开,所有被阻塞的...[作者空间]
CountDownLatch是一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待...[作者空间]
在Java里,Object.wait()/Object.wait(long)以及Object.notify()/O...[作者空间]
Java Memory Model JMM是隶属于JVM的,从抽象的角度来看,JMM定义了线程和主内存之间的抽象关...[作者空间]