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

解决方案 »

  1.   

    Display.getCurrent().asyncExec(new Runnable() { 
        public void run() { 
            button.setText("update"); 
        } 
    }; 
      

  2.   

    多线程设计的不好。你的按钮响应函数,没有及时返回,造成界面假死。通常,GUI程序,在后台,都会有一个绘制线程,来绘制图形界面,包括你的按钮。按钮响应的那个函数,一般也会被绘制线程来调用,
    如果按钮响应函数,无法(及时)返回,那么,用户界面就不会被绘制,
    出现假死状态。所以,多线程的程序,应该在按钮响应的函数里面,将按钮响应的事情,交由其他线程来做。
    这个线程,可以你自己new一个,也可以使用线程池,总之,不要让绘制线程来做,
    这样,无论你怎么点击按钮,用户界面都会很流畅的被绘制出来了。