4.1线程停止:顾名思义就是让线程停止运行,但不要使用stop或者destroy等过时或者JDK不推荐使用的方法(简而言之就是不使用);建议线程正常停止—————>利用次数暂停,不建议是死循环;建议用标志位flag————>设置一个布尔变量flag去达到让线程停止的效果
4.1.1 实现接口和run()方法,并定义一个标志位布尔类型的flag
public class TestStop implements Runnable {
//标志位
private Boolean flag = true;
@Override
public void run() {
}
}
4.1.2创建一个stop方法并构造标志位
public void stop(){
this.flag = false;
}
4.1.3在子线程里面添加带有标志位逻辑的执行体代码,代表子线程的运行
@Override
public void run() {
int i = 0;
while (flag){
System.out.println("Thread子线程跑起来第" + i++ + "次");
}
4.1.4创建一个主类(主线程),并在主线程里面启动子线程,然后在主线程中添加逻辑执行体,代表主线程的运行,其中加入让主线程暂停运行的方法
public static void main(String[] args) {
TestStop testStop = new TestStop();
new Thread(testStop).start(); //开启子线程
for (int i = 0; i < 1000; i++) {
System.out.println("主线程跑到" + i);
if (i == 900){
//调用stop方法切换标志位,让主线程i = 900的时候暂停主线程的执行逻辑运行
testStop.stop();
System.out.println("线程该停止了,此时就是" + i);
}
}
}
结果分析
由于我在主线程里面调用了标志位的方法,所以会让运行结果暂停