下面的(伪)代码导致了一些我不理解的行为。我有2个线程并行运行。两者都进行相同(复杂)的计算,但我不知道哪一个会最先完成。反复运行,有第一个更快的情况和第二个更快的情况。这是可以的,并按预期工作。然后,第一个成功的线程应该终止另一个线程,并且两个线程应该一起派生。但是,如果第一个求解器结束,则一切正常,但如果第二个求解器先完成,则"join命令“不会识别第一个求解器已终止(因此联接将永远等待,程序员不会继续)。你知道我做错了什么吗,或者我可以做什么不同的事?{ if (s
然而,在大多数情况下,网络连接在到达超时之前已经关闭,因此我取消了ScheduledFuture。在本例中,我还希望executor服务终止并释放其线程池。令我惊讶的是,这并不是一成不变的:虽然在调度任务之后,我已经在executor服务上调用了shutdown(),但执行器服务不会在其唯一计划的任务被取消时自动终止。根据JavaDoc of ExecutorService.shutdown(),这种行为甚至可能是正确的,因为可以说,取消的任务还没有“
我有一个StatefulService,它在RunAsync()方法中创建一些任务(使用Task.Run()),但不等待它们。我有一个奇怪的问题,当我尝试手动删除集群中的服务时,并且我在VS处于调试模式,取消令牌值没有设置为true,并且RunAsync()继续执行。然后,在集群UI中得到以下警告: The api ireplicator.changerole(n) on node is stuck 是的,它卡住了,但这只是因为SF没有发送取消请求。正如您所看到的,我正在执行取消令牌,