Безопасно ли запускать пул потоков в конструкторе объектов?Я знаю, что вы не должны запускать поток из конструктора, что-то об экранировании указателя «this» (я не совсем понимаю это, но сделаю еще несколько поисков, чтобы попытаться выяснить это).
Код будет выглядеть примерно так:
private ExecutorService pool;
public handler()
{
pool = Executors.newCachedThreadPool();
}
public void queueInstructionSet(InstructionSet set)
{
pool.submit(new Runnable that handles this instruction set);
}
Если это не сработает, я могу просто создать этот класс как Runnable и запустить его в новом потоке.Однако, похоже, что это добавление ненужного потока в программу, где он на самом деле не нужен.
Спасибо.
РЕДАКТИРОВАТЬ:
Спасибо за ответывсе, они определенно помогли понять это.
Что касается кода, на мой взгляд, имеет смысл, что этот конструктор создает пул потоков, но позвольте мне объяснить, что конкретно делает этот код, потому что я могу думать об этом странным образом.
Весь смысл этого объекта в том, чтобы взять объекты "Наборы инструкций" и действовать на них соответственно.Наборы инструкций приходят от клиентов, подключенных к серверу.Как только полный набор инструкций получен от клиента, этот набор инструкций отправляется этому объекту (обработчику) для обработки.
Этот объект-обработчик содержит ссылку на каждый объект, на который может действовать набор инструкций.Он отправит набор инструкций в пул потоков, который найдет, с каким объектом этот набор инструкций хочет взаимодействовать, и затем обработает набор инструкций для этого объекта.
Я мог бы обработать объект набора инструкций в IOсервер, но мои мысли имеют отдельный класс, поскольку он делает весь код более читабельным, поскольку каждый класс сосредоточен на выполнении только одной конкретной задачи.
Мысли?Совет?
Спасибо