thread.currentThread()方法这个名字让很多人感到困惑。thread.currentThread()不返回“当前线程”,除非您碰巧认为“当前线程”意味着调用函数的线程。
这正是thread.currentThread()实际上所做的:它返回对调用它的线程的引用。如果它总是在程序中返回"main“,那么这意味着您的程序只能从main()线程调用它。
这个名字来源于很久以前,当时大多数计算机只有一个CPU,对于编写线程调度代码的人来说,这应该意味着什么。如果您正在为单个CPU计算机编写调度程序,那么在任何给定的时间都不可能有多个线程在运行。把它称为“当前线程”是很自然的。
在运行在单个CPU系统上的老式Unix风格的操作系统中,返回当前线程标识的系统调用只能返回调用它的线程的标识。
这在用户空间程序中非常有用。
在现代多处理器系统中,“当前线程”的概念并不意味着什么,但是返回调用线程标识的系统调用仍然和以往一样有用。
不幸的是,我们被它的旧名字缠住了。
P.S.,这没有任何意义:
代码语言:javascript运行复制mmt.start();
try {
mmt.join();
...
} catch (...) {
...
}没有任何理由有两个(或更多)线程,除非它们都可以同时做一些有用的事情。在您的代码示例中,一个线程启动第二个线程,然后第一个线程除了等待第二个线程完成之外什么也不做。
您最好在第一个线程中完成所有的工作。