Re: как бы мне прервать консольный ввод ???
От: Lucker Беларусь http://lucker.intervelopers.com/
Дата: 16.03.04 15:19
Оценка:
Здравствуйте, Илья К., Вы писали:

ИК>Есть одна нить ждущая консольный ввод, другая пытается ее завершить и не может.


ИК>Вопрос:

ИК> существует ли способ заставить завершиться вызов 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 >>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.