<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程序中,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); } } }}