java - Countdownlatch 无异常挂起或终止
问题描述
我正在研究 java fxml,我在其中接受 2 个输入并使用它们来运行脚本。我在脚本的执行点暂停
我的问题是当我只提供 1 个输入(例如 1 2 add 3 equal)时,代码运行良好,但是当我提供 2 个输入(例如 1 2 add 和 3 equal)时,代码最后在 countDownLatch.await() 处停止步骤并且不打印脚本输出。
我从 fxml 按钮开始单击如下所示
Executors.newSingleThreadExecutor().submit(()-> {
method(ui_inputs1);
method(ui_inputs2)
}):
我试图在 FXML UI 中实现暂停,即直到用户单击下一个类似调试的东西,用户将在其中选择 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 ADD 3 EQUAL
执行 OP_CODE 操作:[1]
让我们解析 1 2 ADD 3 EQUAL
--------按“播放”继续--------
执行 OP_CODE 操作:[2]
让我们解析 2 ADD 3 EQUAL
--------按“播放”继续--------
执行 OP_CODE 操作:[添加]
让我们解析 ADD 3 EQUAL
--------按“播放”继续--------
执行 OP_CODE 操作:[3]
让我们解析 3 EQUAL
--------按“播放”继续--------
执行 OP_CODE 操作:[EQUAL]
让我们解析 EQUAL --------Press 'Play' To Continue-------- 脚本成功。脚本成功。
当我提供 2 个输入时,缺少粗体和斜体的打印
解决方案
推荐阅读
- kendo-ui - kendo ui 编辑器如何使用范围对象修改用户选择
- java - 未处理异常的输出与程序的输出混合
- c++ - cpp connect() 函数被无限期阻塞
- c++ - 如何正确存储/传递接口类型的变量(现代 C++)?
- android - Timer.sleep() 之前的 (View.INVISIBLE) 不起作用
- php - 获取同一id不同表的数据
- r - windows中donsnow包中的makeCluster无限期挂起
- svg - SVG - 如何将变换矩阵应用于径向渐变?
- python - python 3.6 中 print("""Hello World's"s""""") 的输出
- file - 种子客户端如何在不将整个文件加载到 RAM 的情况下播种种子?