Я назначил потоку сканер, который я должен использовать, чтобы заставить программу ждать ввода пользователем ключевого слова (просто чтобы сделать паузу / приостановить выполнение другой операции) и завершить операцию ожидания после завершения другой операции. Только потому, что сканер блокирует, я не могу прекратить его, даже если я уничтожаю назначенный ему поток. Так как я могу сделать это с неблокирующими?
public class UserInpt implements Runnable {
public UserInpt() {
}
@Override
public void run() {
boolean ispaused = false;
KeywordCounter kc = new KeywordCounter();
Scanner scanner1 = new Scanner(System.in);
while (true) {
String inpt = scanner1.nextLine();
if (inpt.equals(" ")) {
if (ispaused == false) {
ispaused = true;
kc.pause();
} else {
ispaused = false;
kc.resume();
}
}
}
}
}
И я звоню вышеупомянутым классом из моего основного. Поэтому после того, как я получил результаты из другого потока, я хочу остановить ожидание операции пользовательского ввода.
Runnable pauseunpause = new UserInpt();
new Thread(pauseunpause).start();