【JUC】TimeUnit使用
概述
TimeUnit
是java.util.concurrent包下面的一个类。
TimeUnit
表示给定粒度单位的持续时间,并提供跨单元转换的实用方法,以及在这些单元中执行定时和延迟操作。
TimeUnit
不维护时间信息,而仅帮助组织和使用可能在各种上下文中单独维护的时间表示形式。 纳秒定义为千分之一微秒,微秒为千分之一毫秒,毫秒为千分之一秒,一分钟为六十秒,一小时为六十分钟,一天为二十四小时。
TimeUnit
主要用于通知基于时间的方法如何解释给定的定时参数
常用的颗粒度
TimeUnit.DAYS //天
TimeUnit.HOURS //小时
TimeUnit.MINUTES //分钟
TimeUnit.SECONDS //秒
TimeUnit.MILLISECONDS //毫秒
颗粒度转换
public long toMillis(long d) //转化成毫秒
public long toSeconds(long d) //转化成秒
public long toMinutes(long d) //转化成分钟
public long toHours(long d) //转化成小时
public long toDays(long d) //转化天
import java.util.concurrent.TimeUnit;
public class TimeUnitTest {
public static void main(String[] args) {
//convert 1 day to 24 hour
System.out.println(TimeUnit.DAYS.toHours(1));
//convert 1 hour to 60*60 second.
System.out.println(TimeUnit.HOURS.toSeconds(1));
//convert 3 days to 72 hours.
System.out.println(TimeUnit.HOURS.convert(3, TimeUnit.DAYS));
}
}
延时,可替代Thread.sleep()。
示例一:
// Thread.sleep(500); //sleep 单位是毫秒
TimeUnit.SECONDS.sleep(1); // 单位可以自定义,more convinent
示例二:
//如果lock不可用,则以下代码将在50毫秒内超时:
if (lock.tryLock(50L, TimeUnit.MILLISECONDS))