У меня есть объект MyThread, который я создаю, когда мое приложение загружается через сервер, я отмечаю его как поток Daemon и затем вызываю start()
для него. Поток предназначен для того, чтобы сидеть и ждать информацию из очереди, пока приложение активно.
Моя проблема / вопрос заключается в следующем: в настоящее время MyThread расширяет поток, потому что я отмечаю его как Daemon, и я прочитал о том, как предпочтительнее реализовать Runnable и использовать Executors. Итак, я хотел спросить, будет ли MyThread реализовывать Runnable вместо расширения Thread (и, конечно, будет переименован), и я буду использовать newSingleThreadScheduledExecutor()
как, что или, возможно, где я могу пометить что-то как Daemon.
Надеюсь, я не напутал в терминах, извините, если у меня есть, поскольку некоторые части многопоточной среды для меня очень новы.
Спасибо
Еффий
Обновление:
Модуль, на который я ссылаюсь в моем приложении, является веб-приложением, которое на самом деле имеет несколько потоков такого рода, и их объединяет то, что все они входят в ServletContext
как член по разным причинам. В настоящее время я расширяю Thread
до WebThread
, который имеет ServletContext
в качестве memebr, и все подклассы могут использовать это. Если я переключаюсь на парадигму Runnable с Executor и ThreadFactory, то в основном мне нужно иметь уродливый гибрид WebRunnable
, который реализует Runnable
и имеет ServletContext
в качестве открытого члена и мой ThreadFactory
внедряет newThread(WebRunnable arg0)
в дополнение к newThread(Runnable arg0)
.
Я не уверен, что лучше.
Спасибо