本例子是跟着韩老师学的,实现功能是一个线程疯狂输出100以内的数字,在另一个线程通过按下‘Q’实现第一个线程的终止 public class testThread { public static void main(String[] args) { A a = new A(); B b = new B(a); a.start(); b.start(); } } class A extends Thread{ private boolean loop = true; public void setLoop(boolean loop) { this.loop = loop; } @Override public void run() { while (loop){ System.out.println(Math.random()*100+1); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } } } class B extends Thread{ private A a; private Scanner scanner = new Scanner(System.in); public B(A a){ this.a=a; } @Override public void run() { while (true){ System.out.println("请输入(Q)表示退出" ); char key = scanner.next().toUpperCase().charAt(0); if (key== 'Q'){ a.setLoop(false); System.out.println("B线程退出" ); break; } } } }
本次难点,在线程b中需要想到通过构造方法传入a参数,对a的loop进行修改达到暂停a线程的功能