Java多线程,主线程已经停止了为什么?

时间:2014-10-18 19:45:30

标签: java multithreading lwjgl

我正在尝试为LWJGL的Display.update()创建一个单独的线程,但主线程正在休眠或在我的第二个线程运行时停止,我如何让两个线程同时执行?

public Window(int width, int height, String title){

}

@Override
public void run() {
    try {
        Display.setDisplayMode(new DisplayMode(800, 600));
        Display.create();
    } catch (LWJGLException e) {
        e.printStackTrace();
    }   

    while(!Display.isCloseRequested()){
        Display.update();
        Main.Render();
    }

    Display.destroy();

}

}

public static void main(String[] args) {
    //To be moved
    Window window = new Window(100, 100, "1");
    Thread windowThread = new Thread(window);
    windowThread.run();

    System.out.print("I am workign, please show me!");
}

public static void Render(){

    System.out.println("Hello There!");

}

1 个答案:

答案 0 :(得分:1)

改变这一点,

Thread windowThread = new Thread(window);
windowThread.run();

如,

Thread windowThread = new Thread(window);
windowThread.start();

来自Here

  

Thread类中的单独start()和run()方法提供了两种创建线程程序的方法。 start()方法开始执行新线程并调用run()方法。 start()方法立即返回,新线程通常会继续,直到run()方法返回。

     

Thread类' run()方法什么都不做,所以子类应该用代码覆盖方法,以便在第二个线程中执行。如果使用Runnable参数实例化Thread,则线程的run()方法会在新线程中执行Runnable对象的run()方法。

     

根据线程程序的性质,直接调用Thread run()方法可以提供与通过start()方法调用相同的输出,但在后一种情况下,代码实际上是在新线程中执行的。 / p>