我正在开发/开发一个桌面应用程序,其中按钮有actionlistener并且执行大量的后台任务,我没有使用线程,等待,通知或睡眠。我只是混淆了哪一个学习和哪一个使用,否则当我点击按钮,JFrame只是冻结。Java中的线程,等待,通知,睡眠
1)有人可以建议我使用什么和更容易?
2)我正在使用jprogress栏和setvalue(n)方法,但我想用加载的时间自动替换n,我该怎么做?
我正在开发/开发一个桌面应用程序,其中按钮有actionlistener并且执行大量的后台任务,我没有使用线程,等待,通知或睡眠。我只是混淆了哪一个学习和哪一个使用,否则当我点击按钮,JFrame只是冻结。Java中的线程,等待,通知,睡眠
1)有人可以建议我使用什么和更容易?
2)我正在使用jprogress栏和setvalue(n)方法,但我想用加载的时间自动替换n,我该怎么做?
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()
。
如果您使用的秋千GUI,你应该使用“的SwingWorker”类:
http://docs.oracle.com/javase/tutorial/uiswing/concurrency/simple.html