在启动另一个方法之前等待方法完成的简单方法

时间:2012-07-10 15:15:25

标签: java multithreading user-interface

我对Java线程并不熟悉:(。我有这个类,当被调用时,构造一个新窗口(draw()方法).drawGUI()最后调用一个处理方法(比较( )方法)。

基本上结构是

public static void draw() {
    // draws stuff


    compare();
}

问题是drawGUI()绘制的窗口有一些主要的视觉瑕疵,直到处理(compare())结束。

在draw()完成执行后,我可以实现启动compare()的最简单方法是什么?谢谢

2 个答案:

答案 0 :(得分:3)

最简单的方法是将draw()代码放在线程内的asyncExec()

new Thread(new Runnable() {
public void run() {

    //do long running blocking bg stuff here
    Display.getDefault().asyncExec(new Runnable() {
        public void run() {
            draw();
        }   
    }
}).start();

答案 1 :(得分:0)

假设您收到文物的原因是draw()没有机会返回,您可以使用Thread

final T parent = this;
new Thread(new Runnable() {
    public void run() {
        parent.compare();
    }
}).start();

(其中T是具有比较方法的类的类型)。