我正在實現用於線程池的定製FutureTask
(不擴展),等等。我需要特殊功能,並且不能直接根據FutureTask
的方法進行擴展。爲了幫助我做到這一點,我查看了默認實現。你可以在這裏看到默認的實現中,如果您無法訪問代碼:Java AbstractQueuedSynchronizer與定製FutureTask的自定義同步?
正如你所看到的,它使用AbstractQueuedSynchronizer
。我的問題只是爲什麼?這個類是超級優化還是主要是FIFO功能,這是有吸引力的?我最初的想法是實現我的自定義FutureTask
使用AtomicInteger
和其他低級構造,使用我的良好同步構造的平均知識來實現我的FutureTask
優化,所以我可能不希望AQS
的更慢的功能,如果有的話。那麼有沒有其他功能AQS
提供?有什麼好的論據來反對使用它?這是我有限的猜測至今:
AQS *也許事實上的標準,因爲這是你應該在一般情況下(親) *可複製的大部分代碼(PRO) * FIFO功能,使用什麼很有意思,但是FutureTask
是否可取? (中立) *也許它的特性使它比低級構造慢? (con) AtomicInteger &其他低級構造 *可能儘可能快地獲得? (親) *必須實現自我((次要)con) *沒有FIFO(con)
恐怕我不能 - 我已經基本上看過所有這些機會,但我必須實現我自己的。但非常感謝您的幫助! – bombax
@bombax作爲另一個問題,您可能會談論更多關於您的需求。讓我們來看看它是否需要一個新的FutureTask。 – Anderson
謝謝!需求和所有血淋淋的細節,包括所有這些背後的動機,就在這裏:http://stackoverflow.com/questions/20552211/java-swing-halting-the-event-dispatch-thread-activity-temporarilyvv7 #20552211 – bombax