gpt4 book ai didi

java - JAVA线程问题

转载 作者:行者123 更新时间:2023-12-01 16:37:42 25 4
gpt4 key购买 nike

我试图让当我按下按钮时程序在新线程中启动一个方法。问题是,当我按下按钮时,程序会卡住,直到该方法完成运行,就像我根本没有使用线程一样。有谁知道如何解决这个问题?

谢谢摩根。

public Listeners()
{
Calendar.ButtonAddReminder.addActionListener(new ButtonAddListener());
}

private class ButtonAddListener implements ActionListener
{
public void actionPerformed(ActionEvent e) {
new Thread(Calendar.reminder.Reminderchecker(Calendar.reminder.addReminder(date, str))) .start();
}
}

最佳答案

由此看来,Calendar.reminder.addReminder()Calendar.reminder.Reminderchecker() 中的某些内容需要一些时间并锁定 UI,因为这就是 EDT 中发生的情况。

编辑:哦,我明白了。你没有做你认为你正在做的事情。您正在当前线程中执行 Reminderchecker。该方法返回的 Runnable 是在新线程中执行的内容。要在线程中运行 Reminderchecker,请执行以下操作:

new Thread(new Runnable() {
public void run() {
Calendar.reminder.Reminderchecker(...);
}
}).start();

更好:不要像那样生成自己的随机线程。使用有组织的并发策略,例如 ExecutorService 提供的策略。 Executors类可让您轻松创建多个涵盖常见用途的类。

更好:查看 SwingWorkerAPI docs .

关于java - JAVA线程问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7444376/

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