TimeUnit工具类

在java.util.concurrent开发包里面提供有一个TimeUnit类,这个类单独看它的描述是一个时间单元类。该类是一个枚举类,这也是juc开包里面唯一的一个枚举类。

public  enum TimeUnit extends Enum<TimeUnit>
这个类之中支持有:日(DAYS)、时(HOURS)、分(MINUTS)、秒(SECONDS)、毫秒(MILLISECONDS)、微秒(MICROSECONDS)、纳秒(NANOSECONDS).
 
范例:进行休眠控制,休眠2秒
  • 使用Thread.sleep() 方法处理

    package so.strong.concurrents;
    public class StrongDemo {
    public static void main(String[] args) throws Exception{
    System.out.println("[sleep start]"+System.currentTimeMillis());
    Thread.sleep(2*1000);
    System.out.println("[sleep end]"+System.currentTimeMillis());
    }
    }
  • 直接使用TimeUnit类来处理

    package so.strong.concurrents;
    import java.util.concurrent.TimeUnit;
    public class StrongDemo {
    public static void main(String[] args) throws Exception{
    System.out.println("[sleep start]"+System.currentTimeMillis());
    TimeUnit.SECONDS.sleep(2);
    System.out.println("[sleep end]"+System.currentTimeMillis());
    }
    }

发现TimeUnit可以实现更加精确的时间处理操作。除了这一功能之外,在TimeUnit里面最为重要的特点是可以方便的进行各种时间单位的转换,它提供了一个convert()方法

// sourceDuration long类型时间数字
// sourceUnit 目标的转换类型
public long convert(long sourceDuration,TimeUnit sourceUnit)

范例:转换一小时为毫秒

package so.strong.concurrents;
import java.util.concurrent.TimeUnit;
public class StrongDemo {
public static void main(String[] args) throws Exception{
long time = TimeUnit.MILLISECONDS.convert(1,TimeUnit.HOURS);
System.out.println("1小时转为毫秒:"+time);
}
}

范例:3天后的日期

package so.strong.concurrents;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.concurrent.TimeUnit;
public class StrongDemo {
public static void main(String[] args) throws Exception {
long time = TimeUnit.MILLISECONDS.convert(3, TimeUnit.DAYS);
System.out.println("3天转为毫秒:" + time);
long threeTime = System.currentTimeMillis() + time; //当前时间的毫秒数+3天后的毫秒数
System.out.println("3天后的日期:" + new Date(threeTime));
System.out.println("3天后的日期:" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date(threeTime)));
}
}

JUC——TimeUnit工具类(二)的更多相关文章

  1. java工具类(二)之java正则表达式表单验证

    java正则表达式表单验证类工具类(验证邮箱.手机号码.qq号码等) 这篇文章主要介绍了java使用正则表达式进行表单验证工具类,可以验证邮箱.手机号码.qq号码等方法,需要的朋友可以参考下. jav ...

  2. Java学习笔记49(DBUtils工具类二)

    上一篇文章是我们自己模拟的DBUtils工具类,其实有开发好的工具类 这里使用commons-dbutils-1.6.jar 事务的简单介绍: 在数据库中应用事务处理案例:转账案例 张三和李四都有有自 ...

  3. JUC并发工具类

    原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11449367.html java.util.concurrent及其子包,集中了Java并发的各种基础 ...

  4. JUC并发工具类之 CountDownLatch等待多线程完成

    上篇JUC同步工具之Semaphore - 池塘里洗澡的鸭子 - 博客园 (cnblogs.com)示例中,资源释放一个线程就可以退出然后另一个线程可以使用了,那如果需要所有规定数量的资源同时释放了才 ...

  5. JDK1.8 LocalDate 使用方式;LocalDate 封装Util,LocalDate工具类(二)

    未完待续 ........ java.time.*代替方案 1.Instant 代替 Date2.LocalDateTime 代替 Calendar3.DateTimeFormatter 代替 Sim ...

  6. JUC下工具类CountDownLatch用法以及源码理解

    CountDownLoatch是JUC下一个用于控制计数的计数器,比如我需要从6开始计数,每个线成运行完之后计数减一,等计数器到0时候开始执行其他任务. public static void main ...

  7. JUC并发工具类之Semaphore控制并发线程数

    首先看看关于Semaphore的UML图: 从上图看,信号量的实现原理与锁类似,是基于AQS的:有公平与非公平之分.当初始的资源数为1时就退化为排它锁了,资源总数即state的初始值,在acquire ...

  8. juc并发工具类之CountDownLatch闭锁

    import java.util.concurrent.CountDownLatch; /** * 闭锁: 在进行某些运算时, 只有其他所有线程的运算全部完成,当前运算才继续执行(程序流中加了一道栅栏 ...

  9. 并发编程常用工具类(二) SymaPhore实现线程池

    1.symaPhore简介 symaphore(信号量)用来控制同时访问某个资源的线程数量,一般用在并发流量控制.个人对它的理解相当于是接待室每次只能接待固定数量的人,当达到最高接待数的时候,其他人就 ...

随机推荐

  1. 基于mysql的基准测试

    常用的基准测试工具介绍: mysql基准测试工具: mysqlslap,mysql自带的工具,对于性能测试不建议使用 特点: 可以模拟服务器负载,并输出相关统计信息 可以指定也可以自动生成查询语句 常 ...

  2. 使用Apache HttpClient 4.x进行异常重试

    在进行http请求时,难免会遇到请求失败的情况,失败后需要重新请求,尝试再次获取数据. Apache的HttpClient提供了异常重试机制,在该机制中,我们可以很灵活的定义在哪些异常情况下进行重试. ...

  3. xcode Aborting commit: '~/Pods' remains in tree-conflict 错误的解决办法

    在网上找了很多, 最后找到一个比较简单有较的 filename: 是出错的文件的绝对路径: xcode会提示 然后开终端: 1:svn remove --force filename 2:svn re ...

  4. Gradle Goodness: Copy Files with Filtering

    Gradle Goodness: Copy Files with Filtering Gradle's copy task is very powerful and includes filterin ...

  5. Vscode 格式化vue Template代码段

    1.安装 vetur 2.在User Setting中增加设置: "vetur.format.defaultFormatter.html": "js-beautify-h ...

  6. ORA-27300: OS system dependent operation:sendmsg failed with status: 105 ORA-27301: OS failure message: No buffer space available

    早上查看数据库alert日志,发现如下ORA-报错: kgxpvfynet: mtype: 61 process 6460 failed because of a resource problem i ...

  7. TCP|UDP|Http|Socket

    TCP_IP.Http.Socket的区别 - 计算机网络知识库 iOS-Socket网络通信-框架与API - 简书 CocoaAsyncSocket + Protobuf 处理粘包和拆包问题 - ...

  8. java核心技术-多线程之引导概念

    前两篇文章分别讲了,Java线程相关基础概念以及线程的内存模型,本节作为后续章节的引导,个人认为对于学习后面的只是还是比较重要.好了,既然说了多线程,那么首先要弄清以下几个问题: 1. 什么是多线程? ...

  9. vmware虚拟机下linux centos6.6只有lo,没有eth0网卡、随机分配ip地址,固定ip地址等问题

    这个问题卡了我一天多的时间,百度上搜出来的问题五花八门,反而把我给搞糊涂了.最后总算是实践成功了,记录一下配置的过程. 配置网卡和随机分配ip地址 我安装的是basic server版本,用的是NAT ...

  10. 基于 pyMongo 和 wxPython 实现的 MongoDB Schema Analyser

    MongoDB 作为文档型 NoSql 数据库,它的集合表结构往往不像关系型数据库那么固定和统一,同一个集合下的文档(document)的字段变化和差异可能很大,特别是在数据模型缺乏良好规划和规范的数 ...