【发布时间】:2018-02-15 18:55:09
【问题描述】:
我一直在努力创建一个运行渲染的线程,我遇到了这种实现方式:
Class Main implements Runnable {
private Thread thread;
private boolean running = false;
public void start() {
running = true;
thread = new Thread(this, "renderingThread")
thread.start(); //calls run()
}
public void run() {
init(); //init glfw + create window
while(running) {
update();
render();
}
}
public static void main(String[] args) {
new Main().start()
}
请注意,仅包含与线程相关的代码部分。
现在,程序流程看起来像这样(如果我错了,请纠正我):构造类型/类 Main 的新对象(因此,在堆上保留一个位置)。然后,调用 Main 类型对象的 start() 方法。 running 布尔值设置为真。然后,通过构造函数Thread(Runnable target, String name)创建一个新线程——在我的例子中,第一个参数是this关键字,意思是对象的引用Main 类型的第一个参数被传递(因为该方法已被 Main 类型的对象调用)。然后,下一行是最让我烦恼的。 thread 引用调用方法 start(),但它以某种方式引用了 run() 方法。怎么样?
非常感谢您详细解释线程对象的 start() 方法如何引用 run() 方法。
【问题讨论】:
-
这是你 - 大概 - 写的代码。
start()方法的存在完全是您的选择,与线程本身使用也称为start()的方法启动这一事实无关。
标签: java multithreading lwjgl