日期:2014-05-20  浏览次数:20718 次

java 多线程和GUI僵死问题
我现在做了一个多线程的程序,用GUI上的一个按钮控制程序开始或结束,但是按开始的时候,整个GUI界面咔在那里,按钮按下去之后就弹不上来知道线程运行结束,界面才恢复过来,这是怎么回事,怎样才能改进

------解决方案--------------------
Display.getCurrent().asyncExec(new Runnable() { 
public void run() { 
button.setText("update"); 

};
------解决方案--------------------
你应该在按钮的事件处理函数里面 新开一个线程来处理你后续要处理的事情
否则的话 他就会认为还在执行你的处理过程 没法从事件处理函数中出来
------解决方案--------------------
多线程设计的不好。

你的按钮响应函数,没有及时返回,造成界面假死。

通常,GUI程序,在后台,都会有一个绘制线程,来绘制图形界面,包括你的按钮。

按钮响应的那个函数,一般也会被绘制线程来调用,
如果按钮响应函数,无法(及时)返回,那么,用户界面就不会被绘制,
出现假死状态。

所以,多线程的程序,应该在按钮响应的函数里面,将按钮响应的事情,交由其他线程来做。
这个线程,可以你自己new一个,也可以使用线程池,总之,不要让绘制线程来做,
这样,无论你怎么点击按钮,用户界面都会很流畅的被绘制出来了。