powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Самопроизвольное завершение потоков
5 сообщений из 5, страница 1 из 1
Самопроизвольное завершение потоков
    #38779991
publexus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Запускаю потоки через Executors.newCachedThreadPool(). Потоки могут порождать дочерние, но не более 2-го уровня. Некоторые из потоков запускаются, но потом бесследно куда-то исчезают. Вот пример кода внутри потока:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
class Task implements Runnable {

	@Override
	public void run() throws Exception {

		try {
			log("started");

			// основные действия, без ретурнов
			// здесь также могут запускаться дочерние потоки (но не более 2 уровня)
			...

			log("end");
			return;

		} catch(Exception e) {
			log("runtime exception: " + e.getMessage());

		} finally {
			log("finally");
		}
	}
}



Все процессы запускаются (фиксируют log("started")), но небольшой процент потоков почему то не доходит до log("end"), при этом в секцию catch не попадает, но выполняет секцию finally. В выводе консоли никаких эксепшенов нет. Никаких выходов из основного блока нет. Из кода процессы принудительно не прерываются.

Может ли ExecutorService самостоятельно прерывать порожденные процессы? Но разве при этом не должен выполниться catch с InterruptedException?

Почему такое может происходить?
...
Рейтинг: 0 / 0
Самопроизвольное завершение потоков
    #38780004
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
publexus,

У вас вылетает Throwable или Error, который не ловится в catch(Exception e).
Гребаный ThreadPoolExecutor непойманые исключения спокойно игнорирует и даже никуда не выводит.
Поменяейте на catch(Throwable e) и увидите какая у вас ошибка.
...
Рейтинг: 0 / 0
Самопроизвольное завершение потоков
    #38780086
publexus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

Сделал как вы сказали. Запустил несколько раз тесткейс. Во всех случаях все задачи отработали до конца (хотя до этого в большинстве тесткейсов терялись потоки). Но при этом никаких эксепшенов в логах не было. Чудеса!
...
Рейтинг: 0 / 0
Самопроизвольное завершение потоков
    #38780127
publexus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

Однако при запуске более тяжелого тесткейса, выскочило java.lang.OutOfMemoryError: unable to create new native thread. Но сейчас я отлавливаю эту ошибку.
Теперь понятно, что система не могла запустить поток из-за нехватки ресурсов и тупо прерывала текущий.

Спасибо Blazkowicz за помощь.
...
Рейтинг: 0 / 0
Самопроизвольное завершение потоков
    #38780226
cdtyjv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
publexusОднако при запуске более тяжелого тесткейса, выскочило java.lang.OutOfMemoryError: unable to create new native thread. Но сейчас я отлавливаю эту ошибку.
Теперь понятно, что система не могла запустить поток из-за нехватки ресурсов и тупо прерывала текущий.Текущие потоки никто не прерывал. Они сами себя прерывали, если им требовалось что-то заалоцировать, но не получалось из-за нехватки памяти. в общем случае, OOME в одном потоке никак не влияет на другие потоки.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Самопроизвольное завершение потоков
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]