3中队列WorkQueue结合Max的效果:
可以看得出,ArrayBlockingQueue内部是Lock锁机制
如果LinkedBlockingDeque有指定带参构造的话,那么跟之前的无参构造就不一样的,无参构造的一般把该队列看成无界的。
public static void main(String[] args) { LinkedBlockingDeque link = new LinkedBlockingDeque<Runnable>(2); ThreadPoolExecutor pool = new ThreadPoolExecutor(2,3,5, TimeUnit.SECONDS, link); pool.execute(new Runnable()); ... } // 假如5个任务,则放入队列的有2个任务,执行3个任务 // 假如6个任务,则有一个任务会被拒绝执行当然了, LinkedBlockingQueue使用无参构造的话,那么max将直接忽略,相当于Integer.Max_Value。
ArrayBlockingQueue是带参构造的,道理一样。
SynchronousQueue则可以想象一个都不放在队列里。