《Java多线程编程核心技术(第2版)》 —1.11.5 用stop()方法暴力停止线程

举报
华章计算机 发表于 2020/02/08 15:16:21 2020/02/08
【摘要】 本节书摘来自华章计算机《Java多线程编程核心技术(第2版)》 一书中第1章,第1.11.5节,作者是高洪岩。

1.11.5 用stop()方法暴力停止线程

使用stop()方法可以强行停止线程,即暴力停止线程。

新建项目useStopMethodThreadTest,文件MyThread.java代码如下:

package testpackage;

public class MyThread extends Thread {

    private int i = 0;

 

    @Override

    public void run() {

        try {

            while (true) {

                i++;

                System.out.println("i=" + i);

                Thread.sleep(1000);

            }

        } catch (InterruptedException e) {

            // TODO Auto-generated catch block

            e.printStackTrace();

        }

    }

 

}

文件Run.java代码如下:

package test.run;

 

import testpackage.MyThread;

 

public class Run {

 

    public static void main(String[] args) {

        try {

            MyThread thread = new MyThread();

            thread.start();

            Thread.sleep(8000);

            thread.stop();

        } catch (InterruptedException e) {

            // TODO Auto-generated catch block

            e.printStackTrace();

        }

    }

 

}

程序运行结果如图1-50所示。

 image.png

图1-50 线程被暴力停止,stop运行图标呈灰色

由运行结果可以看出,线程被暴力停止了,这种方式就是1.11节介绍的第二种停止线程的方法—使用stop()方法强行终止线程。

stop()方法呈删除线程状态,是不再被采用的方法,原因是stop()方法容易造成业务处理的不确定性。例如,A线程执行如下业务:

增加数据1

增加数据2

增加数据3

增加数据4

增加数据5

增加数据6

增加数据7

这时在任意时机对A线程调用stop()方法,A线程并不能确定在哪里被停止了,造成数据增加得不完整。


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。