《Java多线程编程核心技术(第2版)》 —1.12 暂停线程
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所示。
stop()方法用于销毁线程对象,如果想继续运行线程,则必须使用start()方法重新启动线程,而suspend()方法用于让线程不再执行任务,线程对象并不销毁,在当前所执行的代码处暂停,未来还可以恢复运行。
从控制台输出的时间上来看,线程的确被暂停了,而且可以恢复成运行状态。
- 点赞
- 收藏
- 关注作者
评论(0)