我有以下Runnable
task = () -> {
while(true) {
loopPreparation();
_chunkRxTask = receiveChunk(); /*completable future */
try {
_chunkRxTask.get();
}catch (ExecutionException | InterruptedException e) {
break;
}
}
};
我是这样开始的:
_asyncTask = CompletableFuture.runAsync(task);
然后我想通过
完成它if ( _asyncTask != null ) {
_asyncTask.cancel(true);
_asyncTask = null;
}
我看到了_asyncTask.isDone() == true
,但是它的循环继续运行。如何正确停止?我是否总是需要停止内部_chunkRxTask
?
答案 0 :(得分:0)
我的问题的最终解决方案如下:
if ( _asyncTask != null ) {
if ( _chunkRxTask != null ) {
_chunkRxTask.cancel(true);
_chunkRxTask = null;
}
_asyncTask.join();
_asyncTask = null;
}
并停止此活动:
let endTime = 0;
let timer;
function startGame() {
endTime = moment().add(3, 'minutes'); // Current time + 3 minutes
console.log('game started at', moment.now())
}
function renderTimer() {
// This goes on the client side
clearInterval(timer); // If you hit start game again you need to clear the loop
timer = setInterval(function(){ $('#h1').text(moment(moment(endTime).diff(moment())).format('mm:ss')); }, 1000);
}