在main方法中启动两个线程; 在1个线程循环打印100以内的整数; 直到第2个线程从键盘读取了“Q”命令。
public class demo12 {
public static void main(String[] args) {
PrintNum printNum = new PrintNum();
Thread printThread = new Thread(printNum);
Thread readThread = new Thread(new ReadKeyboard(printNum));
printThread.start();
readThread.start();
}
}
class PrintNum implements Runnable {
private boolean loop = true;
@Override
public void run() {
while (loop) {
System.out.println((int) (Math.random() * 100 + 1));
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public void setLoop(boolean loop) {
this.loop = loop;
}
}
class ReadKeyboard implements Runnable {
private PrintNum printNum;
private Scanner scanner = new Scanner(System.in);
public ReadKeyboard(PrintNum printNum) {
this.printNum = printNum;
}
@Override
public void run() {
//接收用户输入
while (true) {
System.out.println("输入Q退出程序: ");
char key = scanner.next().toUpperCase().charAt(0);
if (key == Q) {
//通知PrintNum线程退出
printNum.setLoop(false);
break;
}
}
}
}