文档章节

TimeUnit类详解

时光流转
 时光流转
发布于 2017/09/10 18:15
字数 689
阅读 8
收藏 1

public enum TimeUnit
extends Enum<TimeUnit>
TimeUnit 表示给定单元粒度的时间段,它提供在这些单元中进行跨单元转换和执行计时及延迟操作的实用工具方法。TimeUnit 不维护时间信息,但是有助于组织和使用可能跨各种上下文单独维护的时间表示形式。
TimeUnit 主要用于通知基于时间的方法如何解释给定的计时参数。

例如,如果 lock 不可用,则以下代码将在 50 毫秒后超时:
  Lock lock = ...;
  if ( lock.tryLock(50L, TimeUnit.MILLISECONDS) ) ...
 而以下代码将在 50 秒后超时:
  Lock lock = ...;
  if ( lock.tryLock(50L, TimeUnit.SECONDS) ) ...
但是注意,不保证特定超时实现能够以与给定 TimeUnit 相同的粒度通知 段。 
从以下版本开始:
    1.5 
枚举常量摘要
MICROSECONDS    微秒   一百万分之一秒(就是毫秒/1000)
MILLISECONDS    毫秒   千分之一秒    
NANOSECONDS   毫微秒  十亿分之一秒(就是微秒/1000)
SECONDS          秒
MINUTES     分钟
HOURS      小时
DAYS      天
主要接口:
 long  convert(long duration, TimeUnit unit)
          将给定单元的时间段转换到此单元。
 void  sleep(long timeout)
          使用此单元执行 Thread.sleep.这是将时间参数转换为 Thread.sleep 方法所需格式的便捷方法。
 void  timedJoin(Thread thread, long timeout)
          使用此时间单元执行计时的 Thread.join。
 void  timedWait(Object obj, long timeout)
          使用此时间单元执行计时的 Object.wait。
 long  toMicros(long duration)
          等效于 MICROSECONDS.convert(duration, this)。
 long  toMillis(long duration)
          等效于 MILLISECONDS.convert(duration, this)。
 long  toNanos(long duration)
          等效于 NANOSECONDS.convert(duration, this)。
 long  toSeconds(long duration)
          等效于 SECONDS.convert(duration, this)。
static TimeUnit  valueOf(String name)
          返回带有指定名称的该类型的枚举常量。
static TimeUnit[]  values()
          按照声明该枚举类型的常量的顺序,返回包含这些常量的数组。
注意1:它的常量MICROSECONDS,MILLISECONDS,NANOSECONDS,SECONDS都是TimeUnit类型
注意2:convert(long duration, TimeUnit unit)的意思将duration这个时间转化为本对象(this)所表示的时间形式。
本对象可能MICROSECONDS,MILLISECONDS,NANOSECONDS,SECONDS的一种。
至于duration是哪种形式的时间(MICROSECONDS,MILLISECONDS,NANOSECONDS,SECONDS的一种),
则是通过参数TimeUnit unit来确定的
注意3:TimeUnit是enum(枚举)类型,不能通过外部来实例化。
对用户来说只有它内部定义的下常量可用:MICROSECONDS,MILLISECONDS,NANOSECONDS,SECONDS,MINUTES,HOURS,DAYS
注意4:对于常量MINUTES,HOURS,DAYS,在Java1.5和Android中并没看到,但是在Java1.6中却有。
注意5:关于枚举类型的知识可参加《枚举类型

实例1:
class Task implements Delayed
{
 String name;
 long submitTime;
 Task(String taskName,long delayTime)
 {
  name=taskName;
  /*conver the time from MILLISECONDS to NANOSECONDS
   * *
   */
  submitTime=TimeUnit.NANOSECONDS.convert(submitTime, TimeUnit.MILLISECONDS) + System.nanoTime();  
 }
 public long getDelay(TimeUnit unit) 
 {  
  System.out.println("get delay");
         return unit.convert(submitTime - System.nanoTime(), TimeUnit.NANOSECONDS);  
  }  
    public int compareTo(Delayed o) 
    {  
     System.out.println("compareTo");
         Task that = (Task) o;  
         return submitTime > that.submitTime?1:(submitTime < that.submitTime ? -1 : 0);  
    } 
 void doTask()
 {
  System.out.println("do task:"+name);
 }
}

本文转载自:http://blog.csdn.net/hudashi/article/details/6936604

共有 人打赏支持
时光流转
粉丝 10
博文 75
码字总数 15096
作品 0
私信 提问
Tomcat线程池详解

写在前面的话   最近一直都在研究Java的线程池ThreadPoolExecutor,但是虽然它那么好,但是在实际的用途中怎么去用,对于我来说就不知道如何下手了,还好有开源社区我们可以了解很多项目中...

艾伦HUC
2016/11/14
23
0
线程、多线程、线程池详解

为加深对线程的理解,首先推荐一篇文章:我是一个线程 线程 进程就是在某种程度上相互隔离、独立运行的程序。和进程一样,线程在程序中是独立的、并发的执行路径,每个线程有它自己的堆栈、自...

justbeginning
01/09
0
1
TimeUnit 初探

TimeUnit是什么? TimeUnit是java.util.concurrent包下面的一个类,TimeUnit提供了可读性更好的线程暂停操作,通常用来替换Thread.sleep(),在很长一段时间里Thread的sleep()方法作为暂停线程...

真爱2015
2016/02/26
36
0
Java并发包:ScheduledExecutorService

文章译自:http://tutorials.jenkov.com/java-util-concurrent/index.html 抽空翻译了一下这个教程的文章,后面会陆续放出,如有不妥,请批评指正。 转自请注明出处。 ScheduledExecutorSer...

xiaomin0322
04/18
0
0
优先使用TimeUnit类中的sleep()

TimeUnit是什么? TimeUnit是java.util.concurrent包下面的一个类,TimeUnit提供了可读性更好的线程暂停操作,通常用来替换Thread.sleep(),在很长一段时间里Thread的sleep()方法作为暂停线程...

凉粉凉面凉皮
2014/09/29
0
2

没有更多内容

加载失败,请刷新页面

加载更多

新手也能看懂,消息队列其实很简单

该文已加入开源项目:JavaGuide(一份涵盖大部分Java程序员所需要掌握的核心知识的文档类项目,Star 数接近 16k)。地址:https://github.com/Snailclimb/JavaGuide. 本文内容思维导图: 消息...

阿里云官方博客
13分钟前
0
0
如何在Chrome浏览器中启动deviceready事件(尝试调试phonegap项目)?

我正在开发PhoneGap应用程序,我希望能够在Chrome中调试它,而不是在电话上调试。但是,我在onGetReady()函数中初始化我的代码,该函数在PhoneGap触发“deviceready”事件时触发。由于Chr...

kisshua
今天
9
0
nginx中部署vue打包后的静态文件

如何在nginx中部署静态资源就不描述了, 请看我的这篇博客 将vue脚手架项目打包后的静态文件放到nginx上, 发现有个问题, 即url上有#, 怎么去掉这个#呢. 1 项目中router的mode 路由的mode要为h...

克虏伯
今天
13
0
JS容易理解错误的地方

在这端代码执行的末尾,你会不会hi变量回事函数中的hi了?你会不会认为这不是按引用传递了? 对值传递和引用传递产生质疑了? 1 var hi = {};2 function sayHello(hi) { ...

器石_
今天
9
0
Java开发学习--MongoDB

之前只学过sql,第一次使用非关系型数据库。以前对于关系型数据库与非关系型数据库的概念很模糊,通过这次的学习对这两者有了一个清晰的概念。 主键 在MongoDB中,主键名叫"_id",如果在生成...

微笑向暖wx
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部