Java中的线程、等待、通知、睡眠

Java中的线程、等待、通知、睡眠,java,sleep,wait,notify,jprogressbar,Java,Sleep,Wait,Notify,Jprogressbar,我正在开发/开发一个桌面应用程序,其中按钮有actionlistener,要做很多后台任务,我以前没有使用线程、等待、通知或睡眠。我只是不知道该学习哪一个,否则该使用哪一个当我点击按钮时,JFrame就冻结了 1) 有人能建议我用什么更简单 2) 我正在使用jprogress bar with setvalue(n)方法,但我想用加载所需的时间自动替换n,我该怎么做?如果您使用Swing for GUI,则应使用“SwingWorker”类: 1) 您需要在单击按钮时将正在运行的代码移动到新线程

我正在开发/开发一个桌面应用程序,其中按钮有actionlistener,要做很多后台任务,我以前没有使用线程、等待、通知或睡眠。我只是不知道该学习哪一个,否则该使用哪一个当我点击按钮时,JFrame就冻结了

1) 有人能建议我用什么更简单


2) 我正在使用jprogress bar with setvalue(n)方法,但我想用加载所需的时间自动替换n,我该怎么做?

如果您使用Swing for GUI,则应使用“SwingWorker”类:

1) 您需要在单击按钮时将正在运行的代码移动到新线程中。类似这样的方法会奏效:

public class Worker implements Runnable {
    Thread t;
    public Worker() {
        t = new Thread(this);
    }
    @Override
    public void run() {
        //do stuff here
    }
    public void start() {
        t.start();
    }
}
然后,当您单击JFrame中的按钮时:

Worker w = new Worker();
w.start();
2) 您可以使用所需的任何
int
(例如,在开始获取当前时间时,在结束获取当前时间时,花费的时间=结束开始)调用
setProgress()
。只需确保您也使用了
setmax()