У меня ниже 2 классов. Различные клиенты называют TestThreadPool
, который, в свою очередь, вызывает TestThreadExecutor
для доступа ExecutorService
. Таким образом, проблема заключается в том, что ThreadPool
никогда не запускается, поскольку он всегда создает новый TestThreadExecutor
.static ExecutorService
Итак, я хотел бы установить executeThreadExecutor
в качестве статического метода для запуска threadPool
. Есть ли проблема с статическим методом и статическим ExecutorService
?
Есть ли другой альтернативный способ, например, одинарный и т. Д.?
public class Client {
...
TestThreadPool testThreadPool = new TestThreadPool();
...
}
public class TestThreadPool {
public void executeThread() {
TestThreadExecutor test = new TestThreadExecutor();
...
}
}
public class TestThreadExecutor {
public static ExecutorService testService = null;
public static void executeThreadExecutor {
if (testService == null) {
testService = Executors.newFixedThreadPool(15);
}
...
}
}
Почему вы устанавливаете testService в конструкторе? почему бы просто не установить его прямо? запутать статические переменные в конструкторе класса. – jtahlborn
@jtahlborn: Я согласен, теперь, когда я думаю об этом, это немного запутанно. – Tudor
Спасибо. Это очень полезно для меня. Я хотел бы поставить executorService.shutdown(). Где мне это? Это в блоке catch? Я попытался положить его, наконец, он не принимает новые задачи. – user12121