《Java多线程编程核心技术(第2版)》 —1.12 暂停线程

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

1.12 暂停线程

暂停线程意味着此线程还可以恢复运行,在Java多线程中,可以使用suspend()方法暂停线程,使用resume()方法来恢复线程的执行。

1.12.1 suspend()方法与resume()方法的使用

本节将讲述suspend()方法与resume()方法的使用。

创建测试用的项目suspend_resume_test,文件MyThread.java代码如下:

package mythread;

 

public class MyThread extends Thread {

 

    private long i = 0;

 

    public long getI() {

        return i;

    }

 

    public void setI(long i) {

        this.i = i;

    }

 

    @Override

    public void run() {

        while (true) {

            i++;

        }

    }

 

}

文件Run.java代码如下:

package test.run;

 

import mythread.MyThread;

 

public class Run {

 

    public static void main(String[] args) {

 

        try {

            MyThread thread = new MyThread();

            thread.start();

            Thread.sleep(5000);

            // A段

            thread.suspend();

            System.out.println("A= " + System.currentTimeMillis() + " i="

                   + thread.getI());

            Thread.sleep(5000);

            System.out.println("A= " + System.currentTimeMillis() + " i="

                   + thread.getI());

            // B段

            thread.resume();

            Thread.sleep(5000);

 

            // C段

            thread.suspend();

            System.out.println("B= " + System.currentTimeMillis() + " i="

                   + thread.getI());

            Thread.sleep(5000);

            System.out.println("B= " + System.currentTimeMillis() + " i="

                   + thread.getI());

        } catch (InterruptedException e) {

            e.printStackTrace();

        }

    }

 

}

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

image.png

stop()方法用于销毁线程对象,如果想继续运行线程,则必须使用start()方法重新启动线程,而suspend()方法用于让线程不再执行任务,线程对象并不销毁,在当前所执行的代码处暂停,未来还可以恢复运行。

从控制台输出的时间上来看,线程的确被暂停了,而且可以恢复成运行状态。


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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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