java并發之TimeUnit,代替 TimeUnit.sleep()TimeUnit是java.util.concurrent包下面的一個類,TimeUnit提供了可讀性更好的線程暫停操作,通常用來替換Thread.sleep().在很長一段時間里Thread的sleep()方法...
java并發之TimeUnit,代替 TimeUnit.sleep()
TimeUnit是java.util.concurrent包下面的一個類,TimeUnit提供了可讀性更好的線程暫停操作,通常用來替換Thread.sleep().
在很長一段時間里Thread的sleep()方法作為暫停線程的標準方式。
Thread.sleep() 可讀性差
Thread.sleep()方法:
Thread.sleep(2400000)1
對于大多數程序員來說這種寫法的可讀性很差的,你需要把毫秒轉換成秒和分。
Thread.sleep(4*60*1000);1
這比前面那個例子已經好多了,但是仍然不是最好的,你注意到睡眠時間用毫秒,不容易猜出當前線程將等待4分鐘。
TimeUnit類解決了這個問題,通過指定DAYS、HOURS、MINUTES,SECONDS、MILLISECONDS和NANOSECONDS。
用TimeUnit寫線程睡眠4分鐘:
TimeUnit.MINUTES.sleep(4); // sleeping for 4 minutes1
類似你可以采用秒、分、小時級別來暫停當前線程。你可以看到這比Thread的sleep方法的可讀的好多了。
為什么對TimeUnit并不太熟悉
兩個原因:
一是對比Thread.sleep(),TimeUnit不是很常用,
二是在它不在Thread類中,就像wait和notify同樣不是在Thread中,反正這些需要一段時間才能被采用,并成為一個標準的方式。
TimeUnit 常用的顆粒度
TimeUnit.DAYS 日的工具類 TimeUnit.HOURS 時的工具類 TimeUnit.MINUTES 分的工具類 TimeUnit.SECONDS 秒的工具類 TimeUnit.MILLISECONDS 毫秒的工具類 TimeUnit.SECONDS.sleep( 5 ); //延時5秒12345678
**
TimeUnit 時間顆粒度轉換 **
TimeUnit.SECONDS.toMillis(1) // 1秒轉換為毫秒數 TimeUnit.SECONDS.toMinutes(60) // 60秒轉換為分鐘數 TimeUnit.SECONDS.sleep(5) // 線程休眠5秒 TimeUnit.SECONDS.convert(1, TimeUnit.MINUTES) // 1分鐘轉換為秒數 12345
import java.util.concurrent.TimeUnit; public class Test { public static void main(String[] args) { //1天有24個小時 1代表1天:將1天轉化為小時 System.out.println( TimeUnit.DAYS.toHours( 1 ) ); //結果: 24 //1小時有3600秒 System.out.println( TimeUnit.HOURS.toSeconds( 1 )); //結果3600 //把3天轉化成小時 System.out.println( TimeUnit.HOURS.convert( 3 , TimeUnit.DAYS ) ); //結果是:72 } }
來源:本文內容搜集或轉自各大網絡平臺,并已注明來源、出處,如果轉載侵犯您的版權或非授權發布,請聯系小編,我們會及時審核處理。
聲明:江蘇教育黃頁對文中觀點保持中立,對所包含內容的準確性、可靠性或者完整性不提供任何明示或暗示的保證,不對文章觀點負責,僅作分享之用,文章版權及插圖屬于原作者。
Copyright?2013-2024 JSedu114 All Rights Reserved. 江蘇教育信息綜合發布查詢平臺保留所有權利
蘇公網安備32010402000125
蘇ICP備14051488號-3技術支持:南京博盛藍睿網絡科技有限公司
南京思必達教育科技有限公司版權所有 百度統計