A synchronous queue does not have any internal capacity, not even a capacity of one
synchronous queue
这个队列没有容量,一条也没有。
基于生产者-消费者模式,可实现同步阻塞的功能。
生产者生产数据后,如果没有消费者进行消费,那么生产者线程将会阻塞,直到有消费者消费数据。
如果消费者要消费数据,但是没有生产者生产数据,那么消费者线程将阻塞,直到有生产者生产数据。
应用:
Executors.newCachedThreadPool
public static ExecutorService newCachedThreadPool(ThreadFactory threadFactory) {
return new ThreadPoolExecutor(0, Integer.MAX_VALUE,
60L, TimeUnit.SECONDS,
new SynchronousQueue<Runnable>(),
threadFactory);
}
缓存线程池,不会有任务在队列里面。新的任务会直接去获取线程,若没有线程可用,则创建线程,直到Integer最大值2^31-1。若线程数已达到最大值且还有任务进来,将进行拒绝处理。
网友评论