Java.util.concurrent.Future threadsafe?

我试图找到文档,指示java.util.concurrent.Future is/is not threadsafe。例如,我可以安全地将相同的Future实例提供给多个线程,这些线程都将调用Future.get(...)?

我已经以这种方式使用Future测试了代码,它似乎工作正常,但是如果我能找到书面的期望,即未来以这种方式并发访问是安全的,我会非常高兴。

谢谢。


答案 1

鉴于 Future 旨在由多个线程(至少是提交线程的线程和设置其结果的线程)使用,并且文档指定异步计算与 get 调用后发生的操作之间存在先发生关系,因此我假设这些实现是线程安全的(至少是标准实现)。


答案 2

如果您使用的是 从 返回的 ,那么是的,它们保证是线程安全的。由于Future是一个接口,因此接口的创建者不能保证所有实现都是线程安全的。FutureExecutorService

不过,Nizet确实提出了一个很好的观点。该文档说,Future接口的实现应该是线程安全的,而不是使实现线程安全,这将违反Future的契约。