线程,等待,通知,用Java休眠

时间:2013-03-05 14:29:38

标签: java sleep wait notify jprogressbar

我正在开发/开发一个桌面应用程序,其中按钮具有actionlistener并执行大量后台任务,我之前没有使用该线程,等待,通知或睡眠。我很困惑哪一个要学习,哪一个要用,否则当我点击按钮时,JFrame就会冻结。

1)有人可以建议我使用什么更容易吗?

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

2 个答案:

答案 0 :(得分:1)

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

http://docs.oracle.com/javase/tutorial/uiswing/concurrency/simple.html

答案 1 :(得分:1)

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)您可以使用任何setProgress()(例如,在开始获取当前时间,最后获取当前时间,时间=最终开始时)调用int。确保您也使用过setMaximum()