У меня есть веб-служба, которая запускает пул потоков при запуске службы следующим образом:
ExecutorService threadPool = Executors.newFixedThreadPool(30);
threadPool.execute(new WorkerThread());
Класс Workerthread выглядит следующим образом:
class WorkerThread implements Runnable {
public WorkerThread () {
}
@Override
public void run() {
String threadName = Thread.currentThread().getName()
}
}
Проблема: Иногда имя потока равно NO_THREAD_YET
и я не могу выяснить обстоятельства, при которых это происходит. Я думаю, что ExecutorService
просто не имеет свободных угроз, но почему пул не выбрасывает Exception
, когда он полон, и я пытаюсь добавитьновый WorkerThread
?
Как я могу убедиться, что Thread.currentThread().getName()
всегда возвращает идентификатор действительного потока из пула?
Редактировать: класс WorkerThread
- моя собственная реализация,Это просто сокращенный пример кода, так как другие аргументы, которые я передаю WorkerThread
, например, String
переменные, не связаны с этой проблемой.