我需要为此使用多个线程吗?
是。
由于使用
Scanneron
System.in表示您正在阻塞IO,因此将需要一个线程专用于读取用户输入的任务。
这是一个入门的基本示例(不过,我鼓励您研究
java.util.concurrent用于执行此类操作的软件包。):
import java.util.Scanner;class Test implements Runnable { volatile boolean keepRunning = true; public void run() { System.out.println("Starting to loop."); while (keepRunning) { System.out.println("Running loop..."); try { Thread.sleep(1000); } catch (InterruptedException e) { } } System.out.println("Done looping."); } public static void main(String[] args) { Test test = new Test(); Thread t = new Thread(test); t.start(); Scanner s = new Scanner(System.in); while (!s.next().equals("stop")); test.keepRunning = false; t.interrupt(); // cancel current sleep. }}


