美文网首页
1.7.4在沉睡中停止

1.7.4在沉睡中停止

作者: 农家男孩 | 来源:发表于2017-06-26 22:38 被阅读0次

如果线程在sleep()状态下停止线程,会是什么效果呢?

/**
 * MyThread线程测试
 * @author wuyoushan
 * @date 2017/3/21.
 */
public class MyThread extends Thread {

    @Override
    public void run() {
        super.run();
        try {
            System.out.println("run begin");
            Thread.sleep(200000);
            System.out.println("run end");
        }catch(InterruptedException e){
            System.out.println("在沉睡中被停止!进入catch!"+this.isInterrupted());
            e.printStackTrace();
        }
    }
}

/**
 * @author wuyoushan
 * @date 2017/3/20.
 */
public class Run {
    public static void main(String[] args) {
        try {
            MyThread myThread=new MyThread();
            myThread.start();
            Thread.sleep(200);
            myThread.interrupt();
        } catch (InterruptedException e) {
            System.out.println("main catch");
            e.printStackTrace();
        }
        System.out.println("end");
    }
}

程序的运行结果如下:

run begin
java.lang.InterruptedException: sleep interrupted
    at java.lang.Thread.sleep(Native Method)
    at wys.test.MyThread.run(MyThread.java:15)
end
在沉睡中被停止!进入catch!false

从输出的结果来看,如果在sleep状态下停止某一线程,会进入catch语句中,并清除停止状态值,使之变成false

前一个实验是先sleep然后再用interrupt()停止,与之相反的操作在学习线程时也要注意。

/**
 * MyThread线程测试
 * @author wuyoushan
 * @date 2017/3/21.
 */
public class MyThread extends Thread {

    @Override
    public void run() {
        super.run();
        try {
            for (int i=0;i<100000;i++){
                System.out.println("i="+(i+1));
            }
            System.out.println("run begin");
            Thread.sleep(200000);
            System.out.println("run end");
        }catch(InterruptedException e){
            System.out.println("先停止,再遇到了sleep!进入catch!");
            e.printStackTrace();
        }
    }
}

/**
 * @author wuyoushan
 * @date 2017/3/20.
 */
public class Run {
    public static void main(String[] args) {
        MyThread myThread=new MyThread();
        myThread.start();
        myThread.interrupt();
        System.out.println("end!");
    }
}

运行结果如下:

i=99996
i=99997
i=99998
i=99999
i=100000
run begin
先停止,再遇到了sleep!进入catch!
java.lang.InterruptedException: sleep interrupted
    at java.lang.Thread.sleep(Native Method)
    at wys.test.MyThread.run(MyThread.java:18)

摘选自 java多线程核心编程技术-1.7.4

相关文章

  • 1.7.4在沉睡中停止

    如果线程在sleep()状态下停止线程,会是什么效果呢? 程序的运行结果如下: 从输出的结果来看,如果在sleep...

  • 沉睡了一个冬季 在淤泥中孕育着新生 虽身处黑暗却从未停止努力成长

  • 停止线程-在sleep()中停止

    一:先sleep()然后再用interrupt()停止 运行结果 二:先interrupt(),然后sleep()

  • Spring AOP 基本用法

    导入aopalliance-1.0.jaraspectjrt-1.7.4.jaraspectjweaver-1.7...

  • 我在半梦半醒中沉睡

    我在半梦半醒中沉睡 我在沉睡沉梦中清醒 梦里是阳光 醒来是风雨 梦里是风雨 醒来是阳光 我就在风雨中睡去 在阳光中醒来

  • 我在黑夜中沉睡……

    文/夏莲 那堆柴火燃烧得格外起劲 它吐露着火红的舌头 嘻哈地伸长了脖颈 与这份彻骨的寒作假惺惺地相拥 我感知到了一...

  • 在沉睡中想起她

    文字是让人感性的吧,今天写了一天关于她的故事,反反复复一直改,好像每改一遍我心脏的那个地方都在痛,有人在负...

  • 我在寂寞中沉睡

    我在寂寞中沉睡 黑夜将我拥抱 一分一秒 往事却在脑海不断围绕 为何这般的懊恼 年少轻狂不重要 我在寂寞中沉睡 漆黑...

  • hyperledger fabric1.0 vagrant 环境

    环境提前准备 vagrant 1.7.4 或以上 预备好golang/x/tools 库 在执行vagrant u...

  • 虚度

    在夜里 我将停止仰望星空 停止思念 也将要去努力停止失眠 就让我沉沉睡去 管不了美梦还是噩梦 我将迎着第二天的朝阳...

网友评论

      本文标题:1.7.4在沉睡中停止

      本文链接:https://www.haomeiwen.com/subject/osqscxtx.html