gpt4 book ai didi

java - 与执行程序服务卡住的混淆

转载 作者:行者123 更新时间:2023-12-02 00:30:00 24 4
gpt4 key购买 nike

我正在尝试使用执行器服务运行一个 Swing Worker,但发生了一些奇怪的事情。我目前正在使用方法 newSingleThreadExecutor(); 以及执行以下操作;

Future<?> f = execService.submit(swingWorker);
JOptionPane.showMessageDialog(null, "Created Future");
f.get(120, TimeUnit.SECONDS);

只要我不关闭对话框消息框,我的 Swing Worker 代码就会完美运行。如果我关闭该对话框,那么我的应用程序就会完全卡住。我相信线程被阻塞,但不确定原因是什么。

如果我在没有 execService 帮助的情况下单独运行 swingworker,它会完美地工作,但当然超时功能不可用,这就是这样做的全部目的。我应该只使用计时器吗?

谢谢

最佳答案

如果它看起来像:

public void closeDialog(){
SwingUtitilies.invokeLater(new Runnable(){
public void run(){
Future<?> f = execService.submit(swingWorker);
JOptionPane.showMessageDialog(null, "Created Future");
f.get(120, TimeUnit.SECONDS);
}
});
}

您正在阻止(暂停)EDT。 f.get() 将阻塞,直到 Future 的处理完成。

关于java - 与执行程序服务卡住的混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9265363/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com