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); } } } }
以上就是小编今天的分享了,希望可以帮助到大家。