Thread.currentThread()
可用于获取当前正在执行的线程。而且我认为sleep和yield方法都是静态的,因为它们无法在其他线程上执行睡眠或屈服。因此,通过使它们静态,它将睡眠或仅产生当前正在执行的线程。
这似乎在单处理器系统中工作,如果我调用Thread.currentThread()
或睡眠,那么只有当前正在运行的线程,它将返回或它将睡眠。但在多核系统中,多个线程可以同时运行,
那么Thread.sleep()
或uint16_t
如何运作??
答案 0 :(得分:5)
方法Thread.currentThread()
返回我们当前正在运行的线程。这只是一种说法:"嘿,给我一个运行我的线程的参考"
假设我们有四个内核和四个线程A,B,C和D绝对同时运行,同时调用此方法,它将根据我们当前所在的线程适当地返回A,B,C和D. 。
答案 1 :(得分:4)
在这种情况下,文档很差。 Thread.currentThread()
返回的内容实际上是执行该行代码的线程。因此,无论您是否处于多处理器环境中,都无关紧要。
如果有两个线程ThreadA
和ThreadB
并行运行,并且同时并行请求Thread.currentThread()
,则会获得执行此操作的相应线程。< / p>
答案 2 :(得分:3)
这些方法是静态的,因为您可以访问正在执行该代码的核心/ CPU的当前执行线程。
如果有多个核心或CPU处理器,则通过此代码的每个核心都将返回给您自己的线程。
因此,您无需关心系统中有多少核心/ CPU,这些方法可以在单核和多核系统的两种情况下使用。
请记住,Java Thread
是操作系统真实线程(posix,windows ...)的抽象,因此您可以在不关心操作系统架构的情况下编写程序代码。
答案 3 :(得分:1)
它仅适用于“当前”线程。在多核系统中,如果您的代码是单线程的,则只有一个线程正在运行,这是当前的线程,因此该代码将在该线程上运行。如果你有多线程程序,这个代码将在它被调用的线程中工作。核心数量并不重要。 Java将线程和负载分配给不同的内核,但从代码的角度来看,处理器的数量并不重要。