|
6
|
| Nathan Feger · 技术社区 · 15 年前 |
|
1
13
因为你在虐待我
根据Javadocs,FutureTask是“可取消的异步计算”,但更通俗地说,它包装了Runnable/Callable的特定执行以提供异步性。我其实没有意识到
因此,在第一个示例中发生的是,您正在调度未来的任务,它的run方法在1秒后被调用,因此它计算计算结果(即运行嵌入的
我认为这里的根本问题是,直接安排未来的任务似乎没有意义,至少不是以你现在的方式。如果您希望每五秒钟运行一段代码,那么您肯定应该采用第二种方法。未来任务包含一个(单个!)计算;没有理由希望它被多次调用,事实上它专门缓存结果来防止这种情况。 |
|
|
2
3
至于为什么会出现这种行为,可能是组件之间的一些奇怪的交互,也可能是未定义的。 |
|
|
ron burgundy · 获取-释放语义是否跨线程传递?[副本] 1 年前 |
|
|
H3007 · 并发运行python子进程似乎不是并发的 1 年前 |
|
|
The Oddler · TVar会阻止读取直到更改吗? 1 年前 |
|
|
Wang Tuma · 使用信号量的c++并发问题:按顺序打印 1 年前 |
|
|
Marcel Batista · 在不同线程中更新密钥时的字典线程安全 1 年前 |
|
|
rico · 当volatile关键字真的是必要的? 1 年前 |