InterruptibleChannel's in Netbeans
WigBaM <[email protected]> Mon, 26 Feb 2007 17:36:57 +0000
| Newsgroups | gmane.comp.java.netbeans.general.russian |
|---|---|
| Message-ID | <[email protected]> |
Привет,
Вот ломал голову себе вчера почему это не работало! Часа 2. Потом
догадался запустить программу не через Бинз, а напрямую из шелла и
всё заработало! Ну что за дела такие? Почему Бинз не прерывает
ввод по InterruptibleChannel? Код в сушности такой:
static BufferedReader in = new BufferedReader(
new InputStreamReader(
Channels.newInputStream(
(new FileInputStream(FileDescriptor.in)).getChannel())));
try {
(new TimeOut()).start();
while (in.readLine() != null);
} catch (Exception ex) {/*exit app*/}
public static class TimeOut extends Thread {
Thread threadToInterrupt = null;
public TimeOut() { threadToInterrupt = Thread.currentThread(); }
public void run() {
try { sleep(5000); }
catch(InterruptedException ex) {/*ignore*/}
threadToInterrupt.interrupt();
}
}
Даже когда прерывание произошло Бинз продолжает ждать ввод, и только
когда введена какая-нибудь строка это прерывание срабатывает. Если
запускать из под шелла, то всё работает как надо, прерывание после 5
секунд срабатывает и программа завершается. Есть идеи почему Бинз
себя так плохо ведёт?
--
Best regards,
Степан К. mailto:[email protected]
___________________________________________________________
Now you can scan emails quickly with a reading pane. Get the new Yahoo! Mail. http://uk.docs.yahoo.com/nowyoucan.html