Я ищу пул потоков java, который не будет запускать больше потоков одновременно, чем есть ядра в системе. Эта услуга обычно предоставляется ThreadPoolExecutor с использованием BlockingQueue.java-исполнитель с предопределенной очередью потоков
Однако, если новый поток планируется выполнить, я хочу, чтобы новый поток предварительно очистил один из уже запущенных потоков и добавил предварительно выделенный поток (в приостановленном состоянии) в очередь задач, поэтому его можно возобновить, как только закончится новый поток.
Любые предложения?
Я думаю, что Java-Threads не должны использоваться так, поскольку нет возможности временно остановить, а затем продолжить поток, за исключением случаев, когда вы реализуете такой метод самостоятельно. Но нет общего способа предустановить выполнение, приостановить выполнение и продолжить другой поток. На самом деле, в вашей системе никогда больше нет потоков * работает *, чем количество ядер в вашей системе. Это простой закон физики. Если вы используете больше потоков, чем количество ядер в вашей системе, java автоматически планирует доступные процессоры среди запущенных потоков (с использованием pre-emption). – Javaguru
Спасибо за ваш ответ. Я знаю, что потоковая подвеска устарела в java, однако существуют альтернативные методы, описанные здесь: http://download.oracle.com/docs/cd/E17476_01/javase/1.4.2/docs/guide /misc/threadPrimitiveDeprecation.html. Я применил аналогичный метод для приостановки моих потоков. Моя цель - как можно скорее завершить «новые» задачи. – TinkerTank