所以我目前正在用 Java 进行一些多线程方面的工作,但我很困在一个很可能很简单的事情上。
我当前有一个 JButton,按下该按钮时会调用以下方法:
private void clickTest() throws InterruptedException{
statOrganizer.incrementHappiness();
Thread t = new Thread(new Happiness(workspaceHappy));
t.start();
}
然后大约需要 10-30 秒才能完成。然而,在此期间,仍然可以重新单击 JButton,从而扰乱信息的显示方式。
我想要做的是在这个特定线程“Activity ”期间,禁用该按钮,以便不再可以单击它(从而在该线程已经运行后激活该线程)。线程完成后,我想再次重新启用该按钮。
按钮代码如下所示
button.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent evt) {
if (evt.getClickCount() == 1) {
try {
clickTest();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
});
最佳答案
在开始线程之前禁用该按钮。在线程的最后,发布一个将重新启用按钮的事件(使用 invokeLater)。
您可能还需要取消选项,但这是一个单独的问题。
关于java - Java中的并发——等待执行完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25489181/