多核/多处理器系统上Thread.currentThread()的语义?

Jam*_*s B 3 java multithreading multicore

如果在多核或多处理器机器上运行,其中jvm可能绝对同时运行多个线程(不仅仅是同时出现),api方法java.lang.Thread.currentThread()返回什么?....在上面的场景中,它是否只返回随机的一个当前线程?

Tom*_*icz 9

它返回您当前正在运行的线程.如果你有两个核心和两个线程A并且B完全同时运行,同时调用这个方法,它将返回AB适当地返回.

您的理解是正确的 - 此方法返回的线程始终在运行 - 因为它必须从某个线程调用,并且为了返回,它必须正在运行.不要考虑这个方法:" 所有当前正在运行,未暂停,未阻塞的线程 ".相反,它的意思是:" 给我一个引用我的线程的参考 ".