Countdownlatch毫无例外地挂起或终止

时间:2019-04-10 13:26:49

标签: java multithreading javafx-8 executorservice countdownlatch

我正在研究java fxml,其中我接受2个输入并使用它们来运行脚本。 我在脚本的执行点暂停

我的问题是当我仅提供1个输入(例如1 2加3等于)时,代码运行正常 但是当我提供2个输入(例如1 2加和3个相等)时,代码在最后一步停止在countDownLatch.await()上,并且不打印脚本输出。

我开始在fxml按钮上单击类似以下的内容

Executors.newSingleThreadExecutor().submit(()-> {
method(ui_inputs1);
method(ui_inputs2)
}):

我正在尝试在FXML UI中实现暂停,即直到用户单击诸如debug之类的东西,然后用户将选择要暂停的UI点。

类似这样的

public void onExcecute(
if (debugMode) {

//check is breakpoint the do Platform.runLater(() + UI updates//
countDownLatch.await();
countDownLatch = new CountDownLatch(1);

}
}

当用户单击“播放下一个”按钮时,它将移至下一步,直到达到执行点

   public void onHitBreakpoint() {
    Platform.runLater(()->{
        addStackDebug(listener,false);});
}

 playToNextExecPoint() {
 countDownLatch.countDown();
 }

 public void onfinish{
// script success or failed
}

正确执行的控制台日志是:

让我们解析1 2加3等于

执行OP_CODE操作:[1]

让我们解析1 2加3等于

-------按“播放”继续--------

执行OP_CODE操作:[2]

让我们解析2个ADD 3个相等的

-------按“播放”继续--------

执行OP_CODE操作:[ADD]

让我们解析“ ADD 3 EQUAL”

-------按“播放”继续--------

执行OP_CODE操作:[3]

让我们解析3个相等的

-------按“播放”继续--------

执行OP_CODE操作:[EQUAL]

让我们解析EQUAL -------按“播放”继续-------- 脚本成功。 脚本成功。

当我提供2个输入时,缺少粗体和斜体的打印内容

0 个答案:

没有答案