JUC——TimeUnit工具类(二)
TimeUnit工具类
在java.util.concurrent开发包里面提供有一个TimeUnit类,这个类单独看它的描述是一个时间单元类。该类是一个枚举类,这也是juc开包里面唯一的一个枚举类。
public enum TimeUnit extends Enum<TimeUnit>
- 使用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工具类(二)的更多相关文章
- java工具类(二)之java正则表达式表单验证
java正则表达式表单验证类工具类(验证邮箱.手机号码.qq号码等) 这篇文章主要介绍了java使用正则表达式进行表单验证工具类,可以验证邮箱.手机号码.qq号码等方法,需要的朋友可以参考下. jav ...
- Java学习笔记49(DBUtils工具类二)
上一篇文章是我们自己模拟的DBUtils工具类,其实有开发好的工具类 这里使用commons-dbutils-1.6.jar 事务的简单介绍: 在数据库中应用事务处理案例:转账案例 张三和李四都有有自 ...
- JUC并发工具类
原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11449367.html java.util.concurrent及其子包,集中了Java并发的各种基础 ...
- JUC并发工具类之 CountDownLatch等待多线程完成
上篇JUC同步工具之Semaphore - 池塘里洗澡的鸭子 - 博客园 (cnblogs.com)示例中,资源释放一个线程就可以退出然后另一个线程可以使用了,那如果需要所有规定数量的资源同时释放了才 ...
- JDK1.8 LocalDate 使用方式;LocalDate 封装Util,LocalDate工具类(二)
未完待续 ........ java.time.*代替方案 1.Instant 代替 Date2.LocalDateTime 代替 Calendar3.DateTimeFormatter 代替 Sim ...
- JUC下工具类CountDownLatch用法以及源码理解
CountDownLoatch是JUC下一个用于控制计数的计数器,比如我需要从6开始计数,每个线成运行完之后计数减一,等计数器到0时候开始执行其他任务. public static void main ...
- JUC并发工具类之Semaphore控制并发线程数
首先看看关于Semaphore的UML图: 从上图看,信号量的实现原理与锁类似,是基于AQS的:有公平与非公平之分.当初始的资源数为1时就退化为排它锁了,资源总数即state的初始值,在acquire ...
- juc并发工具类之CountDownLatch闭锁
import java.util.concurrent.CountDownLatch; /** * 闭锁: 在进行某些运算时, 只有其他所有线程的运算全部完成,当前运算才继续执行(程序流中加了一道栅栏 ...
- 并发编程常用工具类(二) SymaPhore实现线程池
1.symaPhore简介 symaphore(信号量)用来控制同时访问某个资源的线程数量,一般用在并发流量控制.个人对它的理解相当于是接待室每次只能接待固定数量的人,当达到最高接待数的时候,其他人就 ...
随机推荐
- JNI由浅入深_8_JNI缓存字段和方法ID
获取字段ID和方法ID时,需要用字段.方法的名字和描述符进行一个检索.检索过程相对比较费时,因此本节讨论用缓存技术来减少这个过程带来的消耗.缓存字段ID和方法ID的方法主要有两种.两种区别主要在于缓存 ...
- HDU 1058(打表)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1058 Humble Numbers Time Limit: 2000/1000 MS (Java/O ...
- 404 Note Found队-Alpha3
目录 组员情况 组员1(组长):胡绪佩 组员2:胡青元 组员3:庄卉 组员4:家灿 组员5:凯琳 组员6:丹丹 组员7:家伟 组员8:政演 组员9:鸿杰 组员10:刘一好 组员11:何宇恒 展示组内最 ...
- nRF5 SDK for Mesh(八) Exploring Mesh APIs using light switch example,使用 灯开关 案例探索BLE mesh 的APIS
Exploring Mesh APIs using light switch example The light switch example is meant to showcase the API ...
- 安装maven提示ERROR: JAVA_HOME is set to an invalid directory.
查询网上资料发现多种解决办法:有的是多写了分号,有的路径错误. 需要注意的是maven配置前需要配置好jdk的路径. 我的java_home 之前的配置为:C:\Program Files\Java\ ...
- oracle数据库——常用的数据类型
2018-12-19 23:08:03 oracle数据库中常用的数据类型有23种,我们把数据类型分为字符型.数字型.日期型和其他数据类型. 一.字符型: 数据类型 取值范围 (字节) 说明 v ...
- iOS项目启动及启动时间优化
app的启动入口Main函数: int main(int argc, char * argv[]) { @autoreleasepool { return UIApplicationMain(argc ...
- Mac电脑用终端生成SSH key 访问自己的Github
链接:https://www.jianshu.com/p/5b34b7b34cae
- 再论C++引用(reference)类型
很多C++初学者搞不清楚C++引用类型,不知有什么用,所以也不知怎么用.一个问题令人迷惑,不是读者有问题,而是教科书有问题. 和多数初学者一样,笔者在初学C++时,关于引用类型,教科书上也是如下表所述 ...
- Nginx与Tomcat实现请求动态数据与请求静态资源的分离
上篇博客说明了Nginx在应用架构中的作用,以及负载均衡的思路.这篇实践一下其中的访问静态资源与访问动态资源的操作. 一.认识访问静态资源与访问动态资源的区别 静态资源:指存储在硬盘内的数据,固定的数 ...