守护线程的理解其实非常本质,所谓守护,就是我这个线程能够控制你另一个线程,例如我们在B线程输入Q字符的时候,我们通过进入A线程的loop进行值的修改,终止A线程的循环,同时也breakB本身的线程
public class CPU_ {
public static void main(String[] args) throws InterruptedException {
A a = new A();
new Thread(a).start();
B b = new B(a);
new Thread(b).start();
}
}
class A implements Runnable{
private boolean loop = true;
public void setLoop(boolean loop) {
this.loop = loop;
}
@Override
public void run() {
while(loop){
System.out.println((int)(Math.random()*100)+1);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println("A线程退出");
}
}
class B implements Runnable{
private A a;
private Scanner msc= new Scanner(System.in);
public B(A a){
this.a = a;
}
@Override
public void run() {
while(true){
System.out.println("输入指令");
char c = msc.next().charAt(0);
if(c == 'Q'){
System.out.println("B线程终止");
a.setLoop(false);
break;
}
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
1871

被折叠的 条评论
为什么被折叠?



