Здравствуйте, Илья К., Вы писали:
ИК>Есть одна нить ждущая консольный ввод, другая пытается ее завершить и не может.
ИК>Вопрос:
ИК> существует ли способ заставить завершиться вызов in.readLine() из другой нити ?
ИК>так получаем in:
ИК>
ИК> BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
ИК>
ИК>нить 1: читает что-то из потока System.in
ИК>
ИК> public void run()
ИК> {
ИК> for(;;)
ИК> {
ИК> //...
ИК> String cmd = in.readLine(); // здесь блокируется до нажатия [Enter]
ИК> //...
ИК> }
ИК> }
ИК>
ИК>нить 2: пытается завершить нить 1
ИК>
ИК> in.close(); // виснет здесь до завершения функции in.readLine (для потоков не System.in в первой нити вылетает IOException)
ИК>
если in — из сокета — @see java.nio
если нет — нет. (Видел единственную реализацию nonblocked file IO с использование treads)
... << RSDN@Home 1.1.3 stable >>