Недавно я работал над развертыванием параллельных объектов на многоядерных системах.В качестве примера я использую метод BlockingQueue.take()
, в спецификации которого указано, что это блокировка .Это означает, что метод не освобождает ресурсы окружающего потока, так что его можно использовать повторно для других одновременных задач.Это полезно, так как общее количество активных потоков в экземпляре JVM ограничено, и если приложению потребуются тысячи активных потоков, жизненно важно иметь возможность повторно использовать приостановленные потоки.С другой стороны, JVM использует отображение 1: 1 из потоков уровня приложения в потоки уровня ОС в Java;т.е. каждый экземпляр потока Java становится базовым потоком уровня ОС.
Текущее решение основано на java.util.concurrency
в Java 1.5+.Тем не менее, нам нужны рабочие потоки, которые можно масштабировать до большого количества.Теперь мне интересно найти следующие ответы:
- Можно ли заменить реализацию
java.lang.Thread
в JVM так, чтобы я мог подключить свою собственную реализацию Thread? - Возможно ли это только путем настройки разделов C ++ реализации потока в JVM и перекомпиляции его?
- Существует ли какая-либо библиотека, обеспечивающая способ замены классического потока в Java?1018 * Опять же, в той же строке, есть ли библиотека или способ указать, как некоторые потоки в Java могут быть сопоставлены с только одним потоком на уровне ОС?
Я также обнаружил , что обсуждает различные реализации JVM, и я не уверен, что они могут помочь.
Заранее спасибо за ваши комментарии и идеи.