我正在尝试查找说明 java.util.concurrent.Future 是否是/不是线程安全的文档。例如,我可以安全地将同一个 Future 实例提供给多个线程,这些线程都将调用 Future.get(...)?
我已经以这种方式使用 Future 测试了代码,它似乎工作正常,但如果我能找到书面的期望,即未来以这种方式并发访问是安全的,我会更高兴。
谢谢。
我正在尝试查找说明 java.util.concurrent.Future 是否是/不是线程安全的文档。例如,我可以安全地将同一个 Future 实例提供给多个线程,这些线程都将调用 Future.get(...)?
我已经以这种方式使用 Future 测试了代码,它似乎工作正常,但如果我能找到书面的期望,即未来以这种方式并发访问是安全的,我会更高兴。
谢谢。
鉴于 Future 旨在供多个线程使用(至少是提交的线程和设置其结果的线程),并且文档指定异步计算和发生的操作之间存在发生前的关系在 get 调用之后,我会假设实现是线程安全的(至少是标准实现)。
如果您使用的是 Future
从 an 返回的ExecutorService
,那么是的,它们保证是线程安全的。由于 Future 是一个接口,接口的创建者不能保证所有的实现都是线程安全的。
Nizet 确实提出了一个很好的观点。文档说 Future 接口的实现应该是线程安全的,而不是使实现线程安全会违反 Future 的合同