Я пишу многопоточное решение на Java для соединения двух систем A и B. Система A является полностью последовательной, а не многопоточной, и будет предоставлять данные для отправки в систему B. Система B принимает данные из нескольких источников асинхронно, все в то же время.
Я использую ThreadPoolExecutor для управления потоками. Я использую статический одноэлементный экземпляр класса TP, который обтекает ThreadPoolExecutor (который также является статическим), потому что система A не может создавать новые объекты, но может выполнять вызовы статических объектов.
Вот где я застрял. Я делаю очень простое тестирование установки, прежде чем изо всех сил. Я создал два класса для тестирования, T1 и T2. Каждый из этих классов импортирует класс TP (где создается статический синглтон). T1 добавляет некоторые объекты в очередь TP, а затем T2 добавляет еще несколько.
Несмотря на то, что объект TP объявлен как статический, похоже, что в параллельной версии работают две версии. Объекты, переданные в очередь T2, выполняются до того, как все объекты, представленные T1, будут выполнены. Кроме того, поскольку ни T1, ни T2 не вызывают shutdown () в ThreadPoolExector, они оба зависают и никогда не завершаются.
Как я могу создать статический экземпляр демона протектора, который в основном просыпается, когда я отправляю что-то для обработки, даже из разных исполняемых файлов Java?