Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Клавиатура и второй поток. / 3 сообщений из 3, страница 1 из 1
16.09.2013, 22:29:20
    #38398175
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Клавиатура и второй поток.
Есть консольное приложение с двумя потоками. Главный поток читает с консоли и посылает команды второму потоку.
Если во втором потоке произошло "нечто" он взводит флаг "пора умирать".
Проблема в том, что я не могу отловить взведение этого флага в главном потоке если он ждет ввода с консоли.

Сейчас у меня есть простой цикл:
Код: java
1.
2.
3.
4.
5.
6.
	BufferedReader scan = new BufferedReader(new InputStreamReader(System.in));
	while(true) {
		String msg = scan.readLine();
		if(stopIt) break;
		worker.doIt(msg);
	}


Спрашивается, как прервать readLine() а не дожидаться пока юзер ткнет Enter?
...
Рейтинг: 0 / 0
16.09.2013, 22:47:56
    #38398184
DEVcoach
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Клавиатура и второй поток.
1) Убедитесь, что stopIt у вас volatile.
2) При остановке приложения попробуйте вызвать interrupt() на потоке, ожидающем получения информации с клавиатуры.
3) Если п.2 не поможет, можете тупо вызвать System.in.close().
...
Рейтинг: 0 / 0
17.09.2013, 00:23:24
    #38398237
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Клавиатура и второй поток.
System.in.close() в фоновом потоке действительно помог.
Правда теперь главный выпадает с исключением, но это уже мелочи :)
Спасибо.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Клавиатура и второй поток. / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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