2010/01/13

Java Cocurrency(4)

使用Sleep停止執行

Thread.sleep造成目前的thread暫時中止執行特定的時間,這是一個有效率給予其他threads處理時間的想法,
sleep方法也可以被使用在調整、如同下面所示的例子,以及等待其他thread。

兩個overloaded版本的sleep被提供:其中一個是sleep特定時間在millisecond另外一個則是nanosecond.
然後這些sleep時間不一定保證準確,因為它們被受到底層的OS的效能限制,而且,sleep期間可以被中斷所終結。

SleepMessage範例,每4秒的間隔印出訊息。

public class SleepMessages {
    public static void main(String args[]) throws InterruptedException {
        String importantInfo[] = {
            "Mares eat oats",
            "Does eat oats",
            "Little lambs eat ivy",
            "A kid will eat ivy too"
        };

        for (int i = 0; i < importantInfo.length; i++) {
            //Pause for 4 seconds
            Thread.sleep(4000);
            //Print a message
            System.out.println(importantInfo[i]);
        }
    }
}

注意到main方法宣告了throws InterruptedExpcetion,這被丟出當其他thread中斷目前的thread當sleep是活動的
,自從這個應用程式沒有定義其他的thread來造成中斷,這並沒有困擾會抓到中斷例外

參考網址:
http://java.sun.com/docs/books/tutorial/essential/concurrency/sleep.html

No comments:

Post a Comment