我正在尝试为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!");
}
答案 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>