例如方法public static void sleep(long millis)
。此方法会导致当前线程 hibernate ,但它如何知道哪个线程是当前线程?静态方法与对象无关并且属于类,那么这种机制是如何工作的呢?
最佳答案
This method causes current thread to sleep, but how does it know, which thread is current?
当前线程由底层操作系统(或线程系统)管理。底层(系统相关)线程实现提供当前线程的句柄:
对于 POSIX 线程,有 API 调用 pthread_self()它返回当前正在执行的线程的线程ID。您可以认为
Thread.currentThread()
最终调用此 C 函数,并将线程 ID 包装在 JavaThread
对象中,然后返回该对象。对于 MS Windows,有 API 调用 GetCurrentThread()它返回当前正在执行的线程的Windows句柄。同样,您可以认为
Thread.currentThread()
最终调用此 C 函数并将 Handle 包装在返回的 JavaThread
对象中。
关于java - java.lang.Thread 静态方法如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14953034/