最近,我一直致力于将并发对象部署到多核上。在一个示例中,我使用了BlockingQueue.take()
方法,其规范中提到它是阻塞的。这意味着该方法不会释放封闭线程的资源,以便可以将其重新用于其他并发任务。这很有用,因为 JVM 实例中的活动线程总数是有限的,如果应用程序需要数千个活动线程,那么能够重用挂起的线程至关重要。另一方面,JVM 在 Java 中使用从应用程序级线程到操作系统级线程的 1:1 映射;即每个Java Thread 实例都成为一个底层操作系统级线程。
当前的解决方案基于java.util.concurrency
Java 1.5+。尽管如此,我们仍需要可扩展到大量的工作线程。现在,我有兴趣找到以下答案:
- 有什么方法可以替换
java.lang.Thread
JVM 中的实现,以便我可以插入自己的 Thread 实现? - 这是否只能通过调整 JVM 中线程实现的 C++ 部分并重新编译来实现?
- 是否有任何库可以提供一种方法来替换 Java 中的经典线程?
- 同样,在同一行中,是否有一个库或一种方法来指导Java 中的某些线程如何映射到操作系统级别的一个线程?
我还发现这讨论了 JVM 的不同实现,我不确定它们是否有帮助。
提前感谢您的意见和想法。