在学java多线程时,发现在关于时间的设置时,有个枚举会经常用到,这个枚举就是TimeUnit。对此产生了兴趣,查阅网上资料与源码后,记录下学到的知识,以便下次看博客时记起来:
首先 TimeUnit是java.util.concurrent包下面的一个类,表示给定单元粒度的时间段
一、主要作用
a.时间颗粒度转换
b.延时
二、举个例子
-
常用的颗粒度
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) //转化天 -
时间颗粒度转换
package com.app;
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
}
}
- 延时
一般的写法
package com.app;
public class Test2 {
public static void main(String[] args) {
new Thread( new Runnable() {
@Override
public void run() {
try {
Thread.sleep( 5 * 1000 );
System.out.println( "延时完成了");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}).start(); ;
}
}
TimeUnit 写法
package com.app;
import java.util.concurrent.TimeUnit;
public class Test2 {
public static void main(String[] args) {
new Thread( new Runnable() {
@Override
public void run() {
try {
TimeUnit.SECONDS.sleep( 5 );
System.out.println( "延时5秒,完成了");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}).start(); ;
}
}