最近は、並行オブジェクトのマルチコアへの展開に取り組んでいます。サンプルでは、仕様にブロッキングBlockingQueue.take()
と記載されているメソッドを使用しています。これは、メソッドが、他の並行タスクに再利用できるように、囲んでいるスレッドのリソースを解放しないことを意味します。これは、JVM インスタンス内のライブ スレッドの総数が制限されているため便利です。また、アプリケーションが何千ものライブ スレッドを必要とする場合、中断されたスレッドを再利用できることが不可欠です。一方、JVM は、アプリケーション レベルのスレッドから Java の OS レベルのスレッドへの 1:1 マッピングを使用します。つまり、各 Java Thread インスタンスは、基盤となる OS レベルのスレッドになります。
java.util.concurrency
現在のソリューションは、Java 1.5+ に基づいています。それでも、多数に拡張できるワーカー スレッドが必要です。今、私は次の答えを見つけることに興味があります:
java.lang.Thread
独自の Thread 実装をプラグインできるように、JVMの実装を置き換える方法はありますか?- これは、JVM のスレッド実装の C++ セクションを微調整して再コンパイルすることによってのみ可能ですか?
- Java の古典的なスレッドを置き換える方法を提供するライブラリはありますか?
- 繰り返しますが、同じ行に、Javaの一部のスレッドをOS レベルの1 つのスレッドのみにマップする方法をガイドするライブラリまたは方法はありますか?
また、これがJVMのさまざまな実装について議論しているのを見つけましたが、それらが役立つかどうかはわかりません.
事前にコメントやアイデアをお寄せいただきありがとうございます。