java resume

<link rel="stylesheet" href="https://js.how234.com/third-party/SyntaxHighlighter/shCoreDefault.css" type="text/css" /><script type="text/javascript" src="https://js.how234.com/third-party/SyntaxHighlighter/shCore.js"></script><script type="text/javascript"> SyntaxHighlighter.all(); </script>

java resume是什麼?讓我們一起來了解一下吧!

java resume是java中與線程API有關的方法。resume方法是可以執行恢復線程,其他還有兩種方法stop和suspend,它們分別負責終止執行線程和暫停執行線程。

 

java resume

在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);            }        }    }}