TimeUnit的用法

来源:互联网 发布:it运维管理软件 编辑:程序博客网 时间:2024/06/10 17:32

一、概述

TimeUnit是java.util.concurrent包下面的一个类,表示给定单元粒度的时间段
作用:
1、时间颗粒度转换
2、延时

二、TimeUnit类介绍

public enum TimeUnit {    NANOSECONDS {//纳秒        public long toNanos(long d)   { return d; }        public long toMicros(long d)  { return d/(C1/C0); }        public long toMillis(long d)  { return d/(C2/C0); }        public long toSeconds(long d) { return d/(C3/C0); }        public long toMinutes(long d) { return d/(C4/C0); }        public long toHours(long d)   { return d/(C5/C0); }        public long toDays(long d)    { return d/(C6/C0); }        public long convert(long d, TimeUnit u) { return u.toNanos(d); }        int excessNanos(long d, long m) { return (int)(d - (m*C2)); }    },    MICROSECONDS {// 微秒        public long toNanos(long d)   { return x(d, C1/C0, MAX/(C1/C0)); }        public long toMicros(long d)  { return d; }        public long toMillis(long d)  { return d/(C2/C1); }        public long toSeconds(long d) { return d/(C3/C1); }        public long toMinutes(long d) { return d/(C4/C1); }        public long toHours(long d)   { return d/(C5/C1); }        public long toDays(long d)    { return d/(C6/C1); }        public long convert(long d, TimeUnit u) { return u.toMicros(d); }        int excessNanos(long d, long m) { return (int)((d*C1) - (m*C2)); }    },    MILLISECONDS {//毫秒        public long toNanos(long d)   { return x(d, C2/C0, MAX/(C2/C0)); }        public long toMicros(long d)  { return x(d, C2/C1, MAX/(C2/C1)); }        public long toMillis(long d)  { return d; }        public long toSeconds(long d) { return d/(C3/C2); }        public long toMinutes(long d) { return d/(C4/C2); }        public long toHours(long d)   { return d/(C5/C2); }        public long toDays(long d)    { return d/(C6/C2); }        public long convert(long d, TimeUnit u) { return u.toMillis(d); }        int excessNanos(long d, long m) { return 0; }    },    SECONDS {//秒        public long toNanos(long d)   { return x(d, C3/C0, MAX/(C3/C0)); }        public long toMicros(long d)  { return x(d, C3/C1, MAX/(C3/C1)); }        public long toMillis(long d)  { return x(d, C3/C2, MAX/(C3/C2)); }        public long toSeconds(long d) { return d; }        public long toMinutes(long d) { return d/(C4/C3); }        public long toHours(long d)   { return d/(C5/C3); }        public long toDays(long d)    { return d/(C6/C3); }        public long convert(long d, TimeUnit u) { return u.toSeconds(d); }        int excessNanos(long d, long m) { return 0; }    },    MINUTES {//分        public long toNanos(long d)   { return x(d, C4/C0, MAX/(C4/C0)); }        public long toMicros(long d)  { return x(d, C4/C1, MAX/(C4/C1)); }        public long toMillis(long d)  { return x(d, C4/C2, MAX/(C4/C2)); }        public long toSeconds(long d) { return x(d, C4/C3, MAX/(C4/C3)); }        public long toMinutes(long d) { return d; }        public long toHours(long d)   { return d/(C5/C4); }        public long toDays(long d)    { return d/(C6/C4); }        public long convert(long d, TimeUnit u) { return u.toMinutes(d); }        int excessNanos(long d, long m) { return 0; }    },    HOURS {//时        public long toNanos(long d)   { return x(d, C5/C0, MAX/(C5/C0)); }        public long toMicros(long d)  { return x(d, C5/C1, MAX/(C5/C1)); }        public long toMillis(long d)  { return x(d, C5/C2, MAX/(C5/C2)); }        public long toSeconds(long d) { return x(d, C5/C3, MAX/(C5/C3)); }        public long toMinutes(long d) { return x(d, C5/C4, MAX/(C5/C4)); }        public long toHours(long d)   { return d; }        public long toDays(long d)    { return d/(C6/C5); }        public long convert(long d, TimeUnit u) { return u.toHours(d); }        int excessNanos(long d, long m) { return 0; }    },    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; }    };

三、用法

延迟:
@Testpublic void  testTime(){new Thread( new Runnable() {          @Override         public void run() {             try {TimeUnit.SECONDS.sleep(10);System.out.println("延时10秒,完成了");             } catch (InterruptedException e) {                 e.printStackTrace();             }         }}).start();}

结合redis在项目中的使用
String key = RedisKeyUtils.getUserTokenKey(userId);BoundValueOperations<String, String> options = redisTemplate.boundValueOps(key);options.set(token);options.expire(15, TimeUnit.DAYS);


0 0
原创粉丝点击