TimeUnit
转http://blog.csdn.net/hudashi/article/details/6936604
public enum TimeUnit
extends Enum<TimeUnit>
TimeUnit 表示给定单元粒度的时间段,它提供在这些单元中进行跨单元转换和执行计时及延迟操作的实用工具方法。TimeUnit 不维护时间信息,但是有助于组织和使用可能跨各种上下文单独维护的时间表示形式。
TimeUnit 主要用于通知基于时间的方法如何解释给定的计时参数。
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:关于枚举类型的知识可参加《枚举类型》
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);
}
}
TimeUnit的更多相关文章
- TimeUnit 使用
TimeUnit是java.util.concurrent包下面的一个类,表示给定单元粒度的时间段 主要作用 时间颗粒度转换 延时 常用的颗粒度 TimeUnit.DAYS //天 TimeUnit. ...
- java TimeUnit synchronized demo
import java.util.concurrent.TimeUnit; public class TestCalc { private static boolean stopRequested=f ...
- 日期工具类TimeUnit
import java.util.concurrent.TimeUnit; 2 3 public class TimeUnitDemo { 4 private TimeUnit timeUnit =T ...
- TimeUnit(转)
java.util.concurrent并发库是JDK1.5新增的,其作者是Doug Lea ,此人是个BOSS级别的天才人物了.有了他提供的类库,使得我们对多线程并发.锁有了很大的帮助,减少了并发难 ...
- Thread.sleep还是TimeUnit.SECONDS.sleep
转http://stevex.blog.51cto.com/4300375/1285767/ 刚看到TimeUnit.SECONDS.sleep()方法时觉得挺奇怪的,这里怎么也提供sleep方法? ...
- TimeUnit枚举类
TimeUnit是 java.util.concurrent 中的一个枚举类.一般让线程进行睡眠时使用: TimeUnit.MILLISECONDS.sleep(100); 比如上面一行代码表示让当 ...
- 枚举类TimeUnit
枚举类TimeUnit 全路径为 java.util.concurrent.TimeUnit TimeUnit 主要用于通知基于时间的方法如何解释给定的计时参数 举例如下 如果 lock 不可用,则以 ...
- 优先使用TimeUnit类中的sleep()
TimeUnit是什么? TimeUnit是java.util.concurrent包下面的一个类,TimeUnit提供了可读性更好的线程暂停操作,通常用来替换Thread.sleep(),在很长一段 ...
- java并发之TimeUnit理解
TimeUnit是java.util.concurrent包下面的一个类,TimeUnit提供了可读性更好的线程暂停操作,通常用来替换Thread.sleep(),在很长一段时间里Thread的sle ...
随机推荐
- python 函数之walk
import os for root, dirs, files in os.walk("./"): print root print dirs print files 功能: ...
- ASP.NET 操作配置文件
1.配置文件的各种操作 http://www.cnblogs.com/shimeng3344518/archive/2007/04/23/723999.html 2. http://www.jb51. ...
- [Swust OJ 801]--Ordered Fractions
题目链接:http://acm.swust.edu.cn/problem/801/ Time limit(ms): 1000 Memory limit(kb): 10000 Description ...
- C# Socket select模型
http://www.cnblogs.com/Clingingboy/archive/2011/07/04/2097806.html http://www.cnblogs.com/RascallySn ...
- Debian(Linux)系统目录简单说明
bin:基础命令执行档 boot:引导装置器的静态链接文件 dev:设备档 etc:主机特定的系统配置 lib:基本共享库及基本内核模块 mnt:用于临时挂载一个文件系统 proc:系统信息的虚拟目录 ...
- 解决servlet乱码问题
1) request中的中文乱码 a) POST方式提交 在获得提交表单信息之前调用request.setCharactersEncoding("UTF-8"); b) GET方式 ...
- Django内置template标签
html过滤{% autoescape on|off %} {{body}} {% endautoescape %} 注释{% comment %} {% endcomment %} csrf攻击 { ...
- Mybatis 的Log4j日志输出问题 - 以及有关日志的所有问题
使用Mybatis的时候,有些时候能输出(主要是指sql,参数,结果)日志.有些时候就不能. 无法输出日志的时候,无论怎么配置log4j,不管是properties的还是xml的,都不起作用. 有些时 ...
- elk工作原理
这个配置文件,是读取nginx日志写入到redis zjtest7-redis:/usr/local/logstash-2.3.4/config# cat logstash_agent.conf in ...
- HDFS写入和读取流程
HDFS写入和读取流程 一.HDFS HDFS全称是Hadoop Distributed System.HDFS是为以流的方式存取大文件而设计的.适用于几百MB,GB以及TB,并写一次读多次的场合.而 ...