workQueue:一個阻塞隊列,用來存儲等待執(zhí)行的任務(wù)影晓,這個參數(shù)的選擇也很重要镰吵,會對線程池的運(yùn)行過程產(chǎn)生重大影響檩禾,一般來說,這里的阻塞隊列有以下幾種選擇:
ArrayBlockingQueue;
LinkedBlockingQueue;
SynchronousQueue;
ArrayBlockingQueue和PriorityBlockingQueue使用較少疤祭,一般使用LinkedBlockingQueue和Synchronous盼产。線程池的排隊策略與BlockingQueue有關(guān)。
workQueue的類型為BlockingQueue<Runnable>勺馆,通诚肥郏可以取下面三種類型:
1)ArrayBlockingQueue:基于數(shù)組的先進(jìn)先出隊列,此隊列創(chuàng)建時必須指定大胁菽隆灌灾;
2)LinkedBlockingQueue:基于鏈表的先進(jìn)先出隊列,如果創(chuàng)建時沒有指定此隊列大小悲柱,則默認(rèn)為Integer.MAX_VALUE紧卒;
3)synchronousQueue:這個隊列比較特殊,它不會保存提交的任務(wù)诗祸,而是將直接新建一個線程來執(zhí)行新來的任務(wù)。