当前线程方法java

use*_*380 8 java multithreading

所以我正在努力为我正在制作的游戏开发线程.我对这个主题新,所以我可能听不懂.我的问题是currentThread()方法如何在java API的Thread类中工作.API说"返回对当前正在执行的线程对象的引用.",但据我所知,多个线程同时运行.如何只返回一个执行线程?

Jea*_*rin 6

调用的代码currentThread将在其中一个线程中执行,而不是在所有线程中执行,因此它可以专门获取该线程.


ass*_*ias 5

当代码中的指令执行时,它会在特定线程中执行。这是该方法返回的线程。

显然,如果特定方法由多个线程执行,则每次执行可能会返回不同的 值Thread.currentThread()

您可以尝试这个简短的示例,以更好地了解正在发生的事情,尤其是 2 个线程并行执行的事实。您应该看到 t1 将运行几个循环,然后 t2 将执行相同的操作并返回 t1 等(您可能需要将循环数从 5 增加到更高的数量,具体取决于您的机器):

public class TestThread {

    public static void main(String[] args) {
        Runnable r = new Runnable() {

            @Override
            public void run() {
                for (int i = 0; i < 5; i++) {
                    System.out.println(Thread.currentThread());
                }
            }
        };

        Thread t1 = new Thread(r, "t1");
        Thread t2 = new Thread(r, "t2");
        t1.start();
        t2.start();
    }
}
Run Code Online (Sandbox Code Playgroud)


eri*_*son 5

假设您在一张纸上打印了说明列表。一个人阅读说明并执行它们。指令是一个程序。人是一根线。你可以复印很多份文件,然后分发给很多人。如果说明上写着类似“打自己一巴掌”之类的话,则您自己是指从该论文中阅读该说明的任何人。同样,Thread.currentThread()指的是正在执行该调用的线程currentThread()