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的源码做一个更详细的了解。
分享到:
相关推荐
标题"实用类的代码"可能是指一系列这样的类,它们提供了一些常用的操作或者工具方法,例如字符串处理、日期时间操作、数学计算等。这些类通常会被封装到一个库或框架中,方便开发者在项目中调用。 描述中的“实用类...
本文将深入探讨基于ThinkPHP5(简称tp5)框架的一些实用类,这些类广泛应用于日常开发,如无限分类、高德地图API集成、阿里云短信服务、年龄计算、邮件发送以及数据的加解密等。 1. **无限分类**: 在内容管理系统...
实用类文本阅读与探究之调查报告类.ppt 实用类文本阅读与探究之调查报告类.ppt 实用类文本阅读与探究之调查报告类.ppt
合适研究底层研发员,但,一般程序员也必须掌握的要点 JDK研究系列--》util实用类util实用类(java.util part2)
《C# .NET 实用类集详解》 在.NET框架中,C#语言以其强大的功能和易用性深受开发者喜爱。而"DotNet.Utilities"是一个集合了多种实用工具类的库,它为开发者提供了大量的便利功能,使得在开发过程中可以更高效地处理...
### 集合与常见的实用类 #### 一、集合框架概述 集合框架是Java中一个非常重要的组成部分,它提供了多种不同的容器来存储对象,每种容器都有自己的特点和适用场景。集合框架的主要目标是提供一种统一的方式来处理...
实用类文本阅读是语文学习的重要组成部分,其语言特色是考察学生理解能力的关键所在。实用类文本,如新闻、人物传记、报告、科普文等,它们的语言特点与文学作品有所不同,更注重信息传递的准确性和实效性。以下将对...
实用类文本北斗卫星导航阅读练习及答案.doc
【实用类文本阅读·传记】高考语文考点主要聚焦在对现当代中外著名人物的传记文本的理解与分析上,其目标是考察学生对这些人物经历、成就、人品的认知与判断能力。2017年《考试大纲》的修订使得实用类文本,包括传记...
《C#实用类集-DotNet.Utilities》是一个包含多种实用功能的C#代码库,它提供了丰富的类和方法,方便开发者在.NET环境中进行文件操作、文件夹管理、加密解密以及XML处理等常见任务。这个类集是.NET开发者的得力工具,...
在Java高级编程中,"实用类"(Utility Classes)是一个重要的概念,它们提供了一系列静态方法,用于执行特定任务,而不包含任何实例变量或构造器。这些类通常被设计为不可实例化,以防止不必要的对象创建,提高性能...
在本章"第4章 实用类"的学习中,我们将深入探讨编程中的实用类,以及相关的PPT、PDF文档和实例。实用类是程序设计中一个重要的概念,它通常包含了各种方便开发者使用的工具方法,可以极大地提高代码的复用性和效率。...
高中语文实用类文本阅读试题及答案.doc
非连续性实用类文本阅读是语文考试中的一个重要题型,主要考察学生的归纳、概括和综合分析能力。在处理这类题目时,有几点关键的策略和技巧值得掌握。 首先,概括内容要点是解题的关键。在新闻类文本中,需要提炼出...
【实用类文本知识概要】 实用类文本涵盖了多种文体,主要关注信息的传递和实际应用。以下是五大类实用类文本的概述: 一、传记 1. 传记的含义: 传记是一种描绘人物生活历程和生命轨迹的文体。根据叙述人称、篇幅...
2018年高考语文基础知识复习教案22专题十三实用类文本阅读第二讲新闻和访谈.pdf
2019高考语文一轮复习板块三现代文阅读专题十四实用类文本阅读课件.ppt
java的实用类 java基础
【实用类文本阅读考情概览】 实用类文本阅读是高考语文中的一个重要部分,主要考查学生的信息获取、筛选、理解和分析能力。自2017年至2019年,全国卷一直重视非连续性文本的阅读,涵盖的主题广泛,如可移动文化遗产...
这个实用类集通常包含一系列静态方法和辅助类,帮助开发者更高效地处理常见的编程任务。下面我们将深入探讨`DotNet.Utilities`中可能涵盖的一些核心知识点。 首先,`DotNet.Utilities`可能包含了字符串操作相关的类...