Java 多线程习题(二):打印数字,读取通知

    在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;
            }
        }
    }
}
经验分享 程序员 微信小程序 职场和发展