java resume是什么?让我们一起来了解一下吧!
java resume是java中与线程API有关的方法。resume方法是可以执行恢复线程,其他还有两种方法stop和suspend,它们分别负责终止执行线程和暂停执行线程。
在java程序中,suspend() 和 resume() 两个方法结合应用,suspend()会使线程进入阻塞情况,并且没有自动恢复功能,所以必须其对应的 resume() 被调用,才可以让线程重新进入可执行状态。
suspend() 和 resume() 方法有很多不足之处,比如:
1.如果 suspend() 和 resume() 方法操作不当时很容易造成公共同步对象的独占,使其他线程不能去访问公共对象资源。
2.当 suspend() 和 resume() 方法使用不当时也容易造成数据不同步的情况。
实战演练,具体步骤如下:
package com.rhwayfun.concurrency;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.concurrent.TimeUnit;
/**
* Created by rhwayfun on 16-4-2.
*/
public class DeprecatedThreadMethod {
public static void main(String[] args) throws InterruptedException {
DateFormat format = new SimpleDateFormat("HH:mm:ss");
Thread printThread = new Thread(new Runner(),"PrintThread");
//设为守护线程
printThread.setDaemon(true);
//开始执行
printThread.start();
//休眠3秒,也就是PrintThread运行了3秒
TimeUnit.SECONDS.sleep(3);
//尝试暂停
printThread.suspend();
System.out.println("main thread suspend PrintThread at " + format.format(new Date()));
TimeUnit.SECONDS.sleep(3);
//将PrintThread进行恢复,继续输出内容
printThread.resume();
System.out.println("main thread resume PrintThread at " + format.format(new Date()));
TimeUnit.SECONDS.sleep(3);
//尝试终止PrintThread,停止输出内容
printThread.stop();
System.out.println("main thread stop PrintThread at " + format.format(new Date()));
TimeUnit.SECONDS.sleep(3);
}
/**
* 该任务实现每隔一秒打印信息
*/
static class Runner implements Runnable{
public void run() {
DateFormat format = new SimpleDateFormat("HH:mm:ss");
while (true){
System.out.println(Thread.currentThread().getName() + " run at " + format.format(new Date()));
//休眠一秒后继续打印
SleepUtil.second(1);
}
}
}
}以上就是小编今天的分享了,希望可以帮助到大家。