我確信這個問題的正確答案取決於池中對象的類型和工作負載,所以我將詳細介紹一下我的實現:Stack或LinkedList for ObjectPool?
我有一個ObjectPool用於池長時間運行的命令行進程。這些進程通過stdin/stdout進行通信,並執行文件/網絡操作。許多任務的完成速度比其他任務快得多,並且可能會將進程快速返回到池中所有對池的訪問都必須是線程安全的。
我的問題是,我最好用LIFO/Stack或FIFO/ConcurrentLinkedQueue管理池嗎?我在兩邊的推理:
- 一個堆棧保持「熱」對象在資源可以保持緩存/等。更長時間。
- FIFO在進程之間平衡呼叫更均勻,每個進程的工作量更少。謝謝!
或者您可以使用['ConcurrentLinkedDeque'](http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ConcurrentLinkedDeque.html)並結合兩者的優點。 – Jeffrey
因此,每個過程都是專門研究某個事物,或者他們都可以做同樣的事情? – Tudor
@Tudor:所有人都可以做同樣的事情。任何對象都和借用下一個一樣好()呃。 – Will