多线程学习:day4 线程的停止

本文介绍了在Java中避免使用过时的线程停止方法,通过实现Runnable接口,设置布尔标志位来控制线程的运行。主线程调用stop方法切换标志位,使子线程在特定条件下暂停执行。
摘要由CSDN通过智能技术生成

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);
            }
        }
    }

结果分析

由于我在主线程里面调用了标志位的方法,所以会让运行结果暂停

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值