sách gpt4 ăn đã đi

java - start() 方法从 start() 调用线程......令人困惑

In lại Tác giả: Walker 123 更新时间:2023-11-30 02:15:07 24 4
mua khóa gpt4 giày nike

我一直在摆弄创建一个运行渲染的线程,并且我遇到了这种实现它的方法:

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()
}

công khai void run() {

init(); //init glfw + create window

while(running) {
update();
render();
}
}

public static void main(String[] args) {
new Main().start()
}

请注意,仅包含与线程相关的代码部分。

现在,程序流程看起来像这样(如果我错了请纠正我):构造Main类型/类的新对象(因此,在堆上保留一个位置)。然后,调用 Main 类型对象的 start() 方法。 running boolean 值设置为 true。然后,通过构造函数 Thread (Runnable target, String name) 创建一个新线程 - 在我的例子中,第一个参数是 cái này 关键字,意味着对象的引用Main 类型作为第一个参数传递(因为该方法已由 Main 类型的对象调用)。然后,下一行是最让我烦恼的。 thread 引用调用方法 start(),但它以某种方式引用 run() 方法。怎么办?

我非常感谢您对线程对象的 start() 方法如何引用 run() 方法进行彻底的解释。

câu trả lời hay nhất

您创建一个新的Thread,Cái đóRunnable目标为cái này(Main类的实例)。 Main 实现 Runnable 意味着方法 run() 被重写。 Thread 类本身实现了 Runnable

当您使用上面的配置启动线程时,方法 start() 会导致线程开始执行;然后,Java 虚拟机调用 Thread 对象的 run() 方法。 tài liệu中说。如果您好奇,请查看 java.lang.Thread 的源代码.

您可以用更简单的方法达到相同的效果:

public class Main implements Runnable { 

@Ghi đè
công khai void run() {
System.out.println("New thread");
}

public static void main(String[] args) {
new Thread(new Main()).start();
System.out.println("Main thread");
}
}

关于java - start() 方法从 start() 调用线程......令人困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48814386/

24 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress