java 多线程和GUI僵死问题 我现在做了一个多线程的程序,用GUI上的一个按钮控制程序开始或结束,但是按开始的时候,整个GUI界面咔在那里,按钮按下去之后就弹不上来知道线程运行结束,界面才恢复过来,这是怎么回事,怎样才能改进 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Display.getCurrent().asyncExec(new Runnable() { public void run() { button.setText("update"); } }; 多线程设计的不好。你的按钮响应函数,没有及时返回,造成界面假死。通常,GUI程序,在后台,都会有一个绘制线程,来绘制图形界面,包括你的按钮。按钮响应的那个函数,一般也会被绘制线程来调用,如果按钮响应函数,无法(及时)返回,那么,用户界面就不会被绘制,出现假死状态。所以,多线程的程序,应该在按钮响应的函数里面,将按钮响应的事情,交由其他线程来做。这个线程,可以你自己new一个,也可以使用线程池,总之,不要让绘制线程来做,这样,无论你怎么点击按钮,用户界面都会很流畅的被绘制出来了。 动手写网络爬虫第一章代码出现警告 如何在Frame里头加上图片作为背景,高手请进,在线等! java操作XML时的问题。 JRadiobutton 问题请教 类型转换出错 简单的数据传递 字节流 AND 字符流 今天碰到个问题。。求助 unix中的jdk怎么用啊? 一个未毕业的程序员,该怎么去走这条路?! 为什么下面的程序说我"keysTocutBysections = {{}}"非法表达式开始 验证数学表达式合法,高手进
public void run() {
button.setText("update");
}
};
如果按钮响应函数,无法(及时)返回,那么,用户界面就不会被绘制,
出现假死状态。所以,多线程的程序,应该在按钮响应的函数里面,将按钮响应的事情,交由其他线程来做。
这个线程,可以你自己new一个,也可以使用线程池,总之,不要让绘制线程来做,
这样,无论你怎么点击按钮,用户界面都会很流畅的被绘制出来了。