У меня есть 2 Тема: main и Thread2.Проснитесь от readLine() (от System.in, No socket)
Главное -> создать Thread2, спать на 3 секунды, выйти.
Thread2 -> readline from System.in и выход.
Я хочу проснуться Thread2, если он является блоком в readline(), я не хочу использовать таймаут и закрытие основного входного потока путем генерации исключения в Thread2 не работает.
Код:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.InterruptedIOException;
public class Main {
public static void main(String[] args) throws InterruptedException {
InputStreamReader sc = new InputStreamReader(System.in);
Thread2 t = new Thread2(sc);
Thread tt = new Thread(t);
tt.start();
Thread.sleep(3000);
System.out.println("exit sleep");
tt.interrupt();
System.out.println("exit main");
}
}
class Thread2 implements Runnable {
InputStreamReader qst;
public Thread2(InputStreamReader sc) {
qst = sc;
}
public void run() {
BufferedReader buff = new BufferedReader(qst);
try {
System.out.println("read thread");
buff.readLine(); //Here is locked!!!!!!!!!!!!!!!!!!
} catch (InterruptedIOException e) {
System.out.println("exit thread");
} catch (IOException e) {
e.printStackTrace();
}
}
}
Исполнение (Println):
-Чтение резьбы
(после 3 секунды)
-exit сна
-exit main
Но Thread2 non stop -> это блок в readline. Зачем?
спасибо, что эта работа! – John