java - java.lang.Thread 静态方法如何工作?

标签 java multithreading

例如方法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 包装在 Java Thread 对象中,然后返回该对象。

  • 对于 MS Windows,有 API 调用 GetCurrentThread()它返回当前正在执行的线程的Windows句柄。同样,您可以认为 Thread.currentThread() 最终调用此 C 函数并将 Handle 包装在返回的 Java Thread 对象中。

关于java - java.lang.Thread 静态方法如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14953034/

相关文章:

java - 一个接一个地延迟显示 JLabel 的问题

单独的线程锁父级中的 Java JDBC 查询

java - 将 Intent 的 json 字符串转换为 Intent 的对象,给出异常

java - 自 JVM 启动以来的时间

java - 使用滑行设置图像

java - Java 中的线程说明

java - 为什么我们需要互斥体来等待通知

java - 如何在 DefaultOAuth2AuthorizationRequestResolver 上设置 AuthorizationRequestCustomizer?

java - 从 SurfaceView 创建类时出错,该类将作为线程运行

c++ - 如何将递归函数的线程与子线程同步