【发布时间】:2013-12-10 21:26:50
【问题描述】:
我正在实现一个自定义FutureTask(未扩展)以用于线程池等。我需要特殊功能,不能直接扩展 FutureTasks 方法。为了帮助我做到这一点,我查看了默认实现。如果无法访问代码,可以在此处查看默认实现:
如您所见,它使用AbstractQueuedSynchronizer。我的问题很简单,为什么?这个类是超级优化的还是主要是吸引人的 FIFO 特性?我最初的想法是使用AtomicInteger 和其他低级构造来实现我的自定义FutureTask,使用我对良好同步构造的平均知识来最佳地实现我的FutureTask,所以我可能不想要AQSs 较慢的功能,如果有的话。那么AQS 还提供其他功能吗?有什么好的论据支持/反对使用它吗?到目前为止,这是我的有限猜测:
AQS
* 也许是事实上的标准,因为它是你应该在一般情况下使用的 (pro)
* 可以复制大部分代码(亲)
* FIFO 功能很有趣,但对于FutureTask 是否可取? (中性的)
* 也许它的特性使它比低级构造慢? (反面)
AtomicInteger 和其他低级结构
* 可能尽可能快? (亲)
* 必须实现自我((次要)骗局)
* 没有先进先出 (con)
【问题讨论】:
标签: java synchronization mutex atomic