线程完成/完成后,在Swing中获取通知

时间:2013-02-15 21:26:33

标签: java multithreading swing

似乎我错过了Java和Swing中的某个点。问题如下:

  • 我有一个带有开始/停止按钮的摇摆GUI(还有一些)
  • 启动函数(在这种情况下,什么设置为线程),Thread启动,它工作,Swing GUI完全可操作,并完成所有其他工作,例如,修改工作线程的参数。
  • 当然,发送一个中断来请求线程停止用户请求就在并运行。到目前为止一切顺利。

但是我没有找到Swing GUI注意到线程自行停止的方法: 如果我忽略它,它会使用户感到困惑。 我当然放了一个循环,其中Swing GUI定期询问Thread.isAlive(并且睡了一段时间再问),但是这个循环完全阻止了Swing GUI。 理想情况下,我想获得线程已停止的通知或事件。 就像所有其他事件一样,Swing进程:-)。

设置它的正确方法是什么?

2 个答案:

答案 0 :(得分:4)

查看SwingWorker。它被设计为在Swing事件(例如按钮按下)的情况下在后台执行任务。它有钩子来监听任务完成时。

答案 1 :(得分:0)

使用布尔标志'done'私有字段。 initialize done = false;当你的线程run()方法完成时,在thread run()方法中设置done = true。 监视标记'done'的值将告诉你线程何时完成。