当前线程方法java

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

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

假设您在一张纸上印有说明列表。 一个人阅读说明并执行它们。 说明书是一个程序。 这个人是一个主题。 你可以制作很多纸质副本并将它们传递给很多人。 如果指示说出类似的话,“打自己”, 你自己指的是从那篇论文中读取该指令的人。 同样, Thread.currentThread()引用正在执行对currentThread()调用的线程。

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

显然,如果特定方法由多个线程执行,则每个执行可能会为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(); } } 

“当前正在执行的线程”意味着系统调度程序为该线程提供了一些时间来执行其代码。

在编写单线程应用程序时,您可以将程序推理为一系列指令,每个指令在前一个指令完成后执行(这是一个粗略的近似,但概念上编译器和处理器尝试模拟它并且好像这是真的一样发生了什么事)。

当您使用多个线程时,每个线程都有自己的一系列指令。 创建时的新线程传递入口点(方法),并将继续从它们执行。 每个线程在执行时独立于其他线程(它只会在另一个线程之后执行一条指令),尽管它们共享内存,因此来自一个线程的副作用可能会影响另一个线程。

因此,对于要执行的某些代码,必须在一个线程的上下文中完成(当应用程序启动时,操作系统会创建一个,在Main方法上开始执行)。 当调用函数currentThread ,它处于其中一个上下文中。

创建线程时的Java运行时将在线程上下文中存储对该Thread对象的引用,而currentThread将在那里查找并返回当前线程。

在任何给定的时间点,只有一个线程将执行(实时),因此Thread.currentThread()返回当前正在执行的Thread的详细信息。 例如,Thread_name,priority,method_name。

多个线程没有同时运行,并且在多个线程之间存在线程切换。 处理器可以一次执行一个任务,因此一次执行一个线程。 所以我们得到了当前运行的线程的引用。