TimeUnit是java.util.concurrent包下面的一个类,表示给定单元粒度的时间段

1、主要作用

时间颗粒度转换

延时

2、常用的颗粒度


  1. TimeUnit.DAYS //天
  2. TimeUnit.HOURS //小时
  3. TimeUnit.MINUTES //分钟
  4. TimeUnit.SECONDS //秒
  5. TimeUnit.MILLISECONDS //毫秒
  6. TimeUnit.NANOSECONDS //毫微秒
  7. TimeUnit.MICROSECONDS //微秒

3、时间颗粒度转换


  1. public long toMillis(long d) //转化成毫秒
  2. public long toSeconds(long d) //转化成秒
  3. public long toMinutes(long d) //转化成分钟
  4. public long toHours(long d) //转化成小时
  5. public long toDays(long d) //转化天

实例:


  1. package com.app;
  2. import java.util.concurrent.TimeUnit;
  3. public class Test {
  4. public static void main(String[] args) {
  5. //1天有24个小时 1代表1天:将1天转化为小时
  6. System.out.println( TimeUnit.DAYS.toHours( 1 ) );
  7. //结果: 24
  8. //1小时有3600秒
  9. System.out.println( TimeUnit.HOURS.toSeconds( 1 ));
  10. //结果3600
  11. //把3天转化成小时
  12. System.out.println( TimeUnit.HOURS.convert( 3 , TimeUnit.DAYS ) );
  13. //结果是:72
  14. }
  15. }

4、延时

(1)一般的写法


  1. package com.app;
  2. public class Test2 {
  3. public static void main(String[] args) {
  4. new Thread( new Runnable() {
  5. @Override
  6. public void run() {
  7. try {
  8. Thread.sleep( 5 * 1000 );
  9. System.out.println( "延时完成了");
  10. } catch (InterruptedException e) {
  11. e.printStackTrace();
  12. }
  13. }
  14. }).start(); ;
  15. }
  16. }

(2)TimeUnit 写法


  1. package com.app;
  2. import java.util.concurrent.TimeUnit;
  3. public class Test2 {
  4. public static void main(String[] args) {
  5. new Thread( new Runnable() {
  6. @Override
  7. public void run() {
  8. try {
  9. TimeUnit.SECONDS.sleep( 5 );
  10. System.out.println( "延时5秒,完成了");
  11. } catch (InterruptedException e) {
  12. e.printStackTrace();
  13. }
  14. }
  15. }).start(); ;
  16. }
  17. }

5、常用时间段


  1. /**
  2. * 无固定期限
  3. */
  4. NONE(0, "无固定期限")
  5. /**
  6. * 1秒钟
  7. */
  8. ,ONE_SEC(1, "1秒钟")
  9. /**
  10. * 5秒钟
  11. */
  12. ,FIVE_SEC(5, "5秒钟")
  13. /**
  14. * 10秒钟
  15. */
  16. ,TEN_SEC(10, "10秒钟")
  17. /**
  18. * 30秒钟
  19. */
  20. ,HALF_A_MIN(30, "30秒钟")
  21. /**
  22. * 1分钟
  23. */
  24. ,ONE_MIN(60, "1分钟")
  25. /**
  26. * 5分钟
  27. */
  28. ,FIVE_MIN(5 * 60, "5分钟")
  29. /**
  30. * 10分钟
  31. */
  32. ,TEN_MIN(10 * 60, "10分钟")
  33. /**
  34. * 20分钟
  35. */
  36. ,TWENTY_MIN(20 * 60, "20分钟")
  37. /**
  38. * 30分钟
  39. */
  40. ,HALF_AN_HOUR(30 * 60, "30分钟")
  41. /**
  42. * 1小时
  43. */
  44. ,ONE_HOUR(60 * 60, "1小时")
  45. /**
  46. * 1天
  47. */
  48. ,ONE_DAY(24 * 60 * 60, "1天")
  49. /**
  50. * 1个月
  51. */
  52. ,ONE_MON(30 * 24 * 60 * 60, "1个月")
  53. /**
  54. * 1年
  55. */
  56. ,ONE_YEAR(365 * 24 * 60 * 60, "1年")

TimeUnit用法的更多相关文章

  1. 多线程java的concurrent用法详解(转载)

    我们都知道,在JDK1.5之前,Java中要进行业务并发时,通常需要有程序员独立完成代码实现,当然也有一些开源的框架提供了这些功能,但是这些依然没有JDK自带的功能使用起来方便.而当针对高质量Java ...

  2. 四种Java线程池用法解析

    本文为大家分析四种Java线程池用法,供大家参考,具体内容如下 http://www.jb51.net/article/81843.htm 1.new Thread的弊端 执行一个异步任务你还只是如下 ...

  3. java的concurrent用法详解

    我们都知道,在JDK1.5之前,Java中要进行业务并发时,通常需要有程序员独立完成代码实现,当然也有一些开源的框架提供了这些功能,但是这些依然没有JDK自带的功能使用起来方便.而当针对高质量Java ...

  4. java5 Lock用法

    锁是控制多个线程对共享资源进行访问的工具.通常,锁提供了对共享资源的独占访问.一次只能有一个线程获得锁,对共享资源的所有访问都需要首先获得锁.不过,某些锁可能允许对共享资源并发访问,如 ReadWri ...

  5. CountDownLatch和CyclicBarrier区别及用法的demo

    javadoc里面的描述是这样的. CountDownLatch: A synchronization aid that allows one or more threads to wait unti ...

  6. synchronized Lock用法

    在介绍Lock与synchronized时,先介绍下Lock: public interface Lock { void lock(); void lockInterruptibly() throws ...

  7. Java线程池ThreadPoolExecutor原理和用法

    1.ThreadPoolExecutor构造方法 public ThreadPoolExecutor(int corePoolSize,int maximumPoolSize,long keepAli ...

  8. java多线程管理 concurrent包用法详解

        我们都知道,在JDK1.5之前,Java中要进行业务并发时,通常需要有程序员独立完成代码实现,当然也有一些开源的框架提供了这些功能,但是这些依然没有JDK自带的功能使用起来方便.而当针对高质量 ...

  9. CountDownLatch/CyclicBarrie用法记录

    在jdk1.5中,java提供了很多工具类帮助我们进行并发编程,其中就有CountDownLatch和CyclicBarrie 1.CountDownLatch的用法 CountDownLatch 位 ...

随机推荐

  1. eclipse-ADT安装失败经验

    今天下载了一个eclipse,结果ADT死活安装不成功,网上试了很多的方法,最后还是失败了.最后听从同事的建议,直接使用adt-bundle了.这个环境基本上都是配置好的. 下载地址 http://w ...

  2. 3. Vue-router 路由

    路由是根据不同的url地址展现不同的内容或页面. 前端路由就是把不同路由对应不同的内容或页面的任务交给前端来做(在单页面应用,大部分页面结构不变,只改变部分内容的使用),之前是通过服务器根据url的不 ...

  3. win10系统64位安装git后右键运行git bash here生成一个mintty.exe.stackdump文件后闪退解决方案

    在其他win10电脑上复制了一个null.sys文件,替换C:\Windows\System32\drivers\null.sys,搞定.

  4. 对于学习apache软件基金会顶级项目源码的一点思路(转)

    ASF的开源项目,为软件行业贡献了太多好的产品和软件思维.学习ASF的项目源码能很大的提升自身的能力.程序运行在服务器上的流程:执行启动脚本(start.sh) -> 指向程序的主方法 -> ...

  5. PatentTips - Method for guest operating system integrity validation

    BACKGROUND The embodiments relate to guest operating system integrity validation, and more particula ...

  6. 2 Java基础语法(keyword,标识符,凝视,常量,进制转换,变量,数据类型,数据类型转换)

    1:keyword(掌握) (1)被Java语言赋予特定含义的单词 (2)特点: 所有小写. (3)注意事项: A:goto和const作为保留字存在. B:类似于Notepad++这种高级记事本会对 ...

  7. web.config访问走代理的配置

    <system.net>    <defaultProxy>      <proxy bypassonlocal="False" usesystemd ...

  8. win8.1 “服务器运行失败”的解决方法

    平台:win8.1 SP1 问题:安装QQ安全管家又卸载后出现了奇怪的问题,1.在桌面点右键→个性化时,提示“服务器运行失败”.2.右键点击“这台电脑”,选择“属性”时没有反应.3.开始屏幕里随便选择 ...

  9. Docker---(1)Docker 简介

    原文:Docker---(1)Docker 简介 版权声明:欢迎转载,请标明出处,如有问题,欢迎指正!谢谢!微信:w1186355422 https://blog.csdn.net/weixin_39 ...

  10. linux下设置密码复杂度限制,怎么设置?

    在linux,设置密码复杂度的方法有几个1. 一个是在/etc/login.defs文件,里面几个选项PASS_MAX_DAYS 90 #密码最长过期天数PASS_MIN_DAYS 80 #密码最小过 ...