java - Java中的并发——等待执行完成

标签 java multithreading concurrency

所以我目前正在用 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/

相关文章:

java - 通过 websocket 连接到 kurento 媒体服务器 java 教程

java - 如何只重绘 JLayeredPane 图层中的一层?

java - 等待后解锁如何发生

c - 数据被模拟的酒店叫醒服务覆盖

c# - 使用 Httpclient 进行长轮询

java - 使用 Java 编程安全/常规/原子寄存器

java - 有什么办法可以解决 Maven 模块中的循环依赖吗?

java - 线程在进入下一个 Activity 之前保持更新一段时间,并且冲突已关闭

python - python中 "bound"环境变量的安全方法是什么?

multithreading - 顺序执行和同步执行有什么区别?