1、TimeUnit
TimeUnit出现在concurrent包中,但它实实在在是一个util类(实用的工具类),严格来说TimeUnit是一个enum类型,包含的常量从NANOSENDS到DAYS共七个。其目的就是从Thread类中的sleep方法中的毫秒参数解脱出来,首先举个例子小试牛刀
public class TimeUnitTest {
public static void main(String[] args) throws InterruptedException {
Thread.sleep(1000*10);
System.out.println("原始的线程睡眠方式");
TimeUnit.SECONDS.sleep(10);
System.out.println("一种更方便的方法");
}
}
再来来看看源码:
public void sleep(long timeout) throws InterruptedException {
if (timeout > 0) {
long ms = toMillis(timeout);
int ns = excessNanos(timeout, ms);
Thread.sleep(ms, ns);
}
}
sleep接收的是一个long型的参数,很明显他是以当前对象为单位的一个长整形值。不管是以DAYS,还是HOURS等其他对象为单位,timeout最终都会转换为Thread.sleep所要求的毫秒和纳秒为单位的参数。我们来看看TimeUnit的toMillis是怎么实现的
public long toMillis(long duration) {
throw new AbstractMethodError();
}
咋一看就只抛出了一个异常,显然如何使得该方法可用它的子类或者说匿名子类回去继承该方法,我们以Days为例,它的实现方式
DAYS {
public long toNanos(long d) { return x(d, C6/C0, MAX/(C6/C0)); }
public long toMicros(long d) { return x(d, C6/C1, MAX/(C6/C1)); }
public long toMillis(long d) { return x(d, C6/C2, MAX/(C6/C2)); }
public long toSeconds(long d) { return x(d, C6/C3, MAX/(C6/C3)); }
public long toMinutes(long d) { return x(d, C6/C4, MAX/(C6/C4)); }
public long toHours(long d) { return x(d, C6/C5, MAX/(C6/C5)); }
public long toDays(long d) { return d; }
public long convert(long d, TimeUnit u) { return u.toDays(d); }
int excessNanos(long d, long m) { return 0; }
};
其中x方法是一个转换函数。读者也可以跟进TimeUnit的源码做一个更详细的了解。
分享到:
相关推荐
NET实用类集-DotNet.Utilities.7z
实用类文本阅读与探究之调查报告类.ppt 实用类文本阅读与探究之调查报告类.ppt 实用类文本阅读与探究之调查报告类.ppt
合适研究底层研发员,但,一般程序员也必须掌握的要点 JDK研究系列--》util实用类util实用类(java.util part2)
实用类的应用第一单元的应用与下载的任务 适应类很重要的恩恩
集合与常见的实用类
全面的XML操作实用类 很实用 值得大家学习使用
CBusttonST类 BtnST.h BtnST.cpp BCMenu.h BCMenu.cpp
Java开发过程中,常用的实用类会使我们的开发变得更便捷,减少代码量。
文件读写 文件夹读写 各种加密解密 XML操作 NET实用类集-DotNet.Utilities.7z\C#实用类集-DotNet.Utilities
实用类文本北斗卫星导航阅读练习及答案.doc
实用类文本阅读语言特色PPT教案.pptx
实用类文本阅读·传记 课件—2021年高考语文考点重点突破复习(共69张PPT).ppt
高中语文实用类文本阅读试题及答案.doc
基于JAVA集合框架及实用类实现的超市会员管理系统,包含:开卡、积分累计、积分兑换、查询剩余积分、修改密码等功能。
专题二 非连续性实用类文本阅读(题型二 主观题).pptx
C# 实用类集 DotNet.Utilities 整理完整版,集合的比较全。 C#实用类集-DotNet.Utilities-整理完整版,欢迎下载 C# 工具类 集合 完整版
实用类.pdf
专题一 实用类文本阅读 单文精练二 大学生创业就业.docx
ASP.NET 图片上传实用类2.txtASP.NET 图片上传实用类2.txtASP.NET 图片上传实用类2.txtASP.NET 图片上传实用类2.txtASP.NET 图片上传实用类2.txtASP.NET 图片上传实用类2.txtASP.NET 图片上传实用类2.txtASP.NET ...
实用类文本阅读之科普文.ppt 实用类文本阅读之科普文.ppt 实用类文本阅读之科普文.ppt