TimeUnit是java.util.concurrent包下面的一个类,表示给定单元粒度的时间段
1、主要作用
时间颗粒度转换
延时
2、常用的颗粒度
TimeUnit.DAYS //天
TimeUnit.HOURS //小时
TimeUnit.MINUTES //分钟
TimeUnit.SECONDS //秒
TimeUnit.MILLISECONDS //毫秒
TimeUnit.NANOSECONDS //毫微秒
TimeUnit.MICROSECONDS //微秒
3、时间颗粒度转换
public long toMillis(long d) //转化成毫秒
public long toSeconds(long d) //转化成秒
public long toMinutes(long d) //转化成分钟
public long toHours(long d) //转化成小时
public long toDays(long d) //转化天
实例:
package com.app;
import java.util.concurrent.TimeUnit;
public class Test {
public static void main(String[] args) {
//1天有24个小时 1代表1天:将1天转化为小时
System.out.println( TimeUnit.DAYS.toHours( 1 ) );
//结果: 24
//1小时有3600秒
System.out.println( TimeUnit.HOURS.toSeconds( 1 ));
//结果3600
//把3天转化成小时
System.out.println( TimeUnit.HOURS.convert( 3 , TimeUnit.DAYS ) );
//结果是:72
}
}
4、延时
(1)一般的写法
package com.app;
public class Test2 {
public static void main(String[] args) {
new Thread( new Runnable() {
@Override
public void run() {
try {
Thread.sleep( 5 * 1000 );
System.out.println( "延时完成了");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}).start(); ;
}
}
(2)TimeUnit 写法
package com.app;
import java.util.concurrent.TimeUnit;
public class Test2 {
public static void main(String[] args) {
new Thread( new Runnable() {
@Override
public void run() {
try {
TimeUnit.SECONDS.sleep( 5 );
System.out.println( "延时5秒,完成了");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}).start(); ;
}
}
5、常用时间段
/**
* 无固定期限
*/
NONE(0, "无固定期限")
/**
* 1秒钟
*/
,ONE_SEC(1, "1秒钟")
/**
* 5秒钟
*/
,FIVE_SEC(5, "5秒钟")
/**
* 10秒钟
*/
,TEN_SEC(10, "10秒钟")
/**
* 30秒钟
*/
,HALF_A_MIN(30, "30秒钟")
/**
* 1分钟
*/
,ONE_MIN(60, "1分钟")
/**
* 5分钟
*/
,FIVE_MIN(5 * 60, "5分钟")
/**
* 10分钟
*/
,TEN_MIN(10 * 60, "10分钟")
/**
* 20分钟
*/
,TWENTY_MIN(20 * 60, "20分钟")
/**
* 30分钟
*/
,HALF_AN_HOUR(30 * 60, "30分钟")
/**
* 1小时
*/
,ONE_HOUR(60 * 60, "1小时")
/**
* 1天
*/
,ONE_DAY(24 * 60 * 60, "1天")
/**
* 1个月
*/
,ONE_MON(30 * 24 * 60 * 60, "1个月")
/**
* 1年
*/
,ONE_YEAR(365 * 24 * 60 * 60, "1年")
分享到:
相关推荐
以下将详细介绍如何使用这些方法来计算日期之间的天数差。 1. **使用`java.util.Date`和`java.util.Calendar`** 在Java 8之前,`Date`和`Calendar`是处理日期的主要类。首先,我们需要创建两个`Date`对象表示输入...
Rxjava功能操作符的使用方法详解 Rxjava是一个非常强大的Reactive Extensions库,提供了多种功能操作符来处理异步数据。下面我们将逐一介绍Rxjava功能操作符的使用方法详解。 一、Rxjava的基本概念 在Rxjava中,...
以上就是 OkHttp 的基本用法,包括 GET 和 POST 请求的同步与异步执行,以及上传键值对、JSON 数据和文件的方法。在实际项目中,你还可以根据需要进行更复杂的配置,例如设置自签名证书、HTTPS 代理等。了解并熟练...
当不再需要监听时,使用`close()`方法关闭`WatchService`,释放资源。 在示例中,程序会持续运行并每3秒检查一次`WatchKey`,直到检测到目标文件(1.txt)的事件。当目标文件被删除时,程序会打印一条消息并继续...
在深入理解`Lock`关键字的用法之前,我们先来了解一些多线程的基础知识。 多线程是现代计算机程序设计中的一个关键特性,它允许程序同时执行多个任务,从而提高资源利用率和程序性能。在Java中,创建和管理线程主要...
本文介绍了Android OKHttp3拦截器的使用方法,分享给大家,具体如下: 添加Interceptor 在上一篇中我们已经知道了okhttp的基本使用,其中在介绍OkHttpClient初始化的时候,介绍了两种方式,第二种方式就可以对这个...
- `TimeUnit`方法:使用`TimeUnit.between`方法可以直接计算两个日期间的差值,单位可以是天、小时等。例如: ```java long diffInMilliseconds = Math.abs(date2.getTime() - date1.getTime()); long daysDiff ...
本Demo旨在教你如何仅使用TextView这一基本组件,实现类似京东、淘宝等电商平台的高仿倒计时效果。 首先,倒计时功能的实现通常涉及到`CountDownTimer`类,这是Android SDK提供的一种定时器工具,适用于执行一系列...
Java线程池 Java线程池是Java语言中的一种高级多线程处理机制,用于避免重复创建和销毁线程而导致额外的性能开销。Java线程池功能可以实现...在上面的示例代码中,我们使用了scheduleAtFixedRate方法来执行定时任务。
Java Exchanger并发类使用方法 Java Exchanger是Java 5引入的并发类,用来实现两个线程之间的对象交换。Exchanger顾名思义,就是用来做交换的。这里主要是两个线程之间交换持有的对象。当Exchanger在一个线程中调用...
在进行性能测试时,我们通常会使用`java.util.concurrent.TimeUnit`类,它提供了在不同时间单位之间转换的方法。通过结合`System.nanoTime()`和`TimeUnit`,我们可以更方便地计算出时间间隔,并将其转换为更易于理解...
// 创建一个方法来启动定时任务 public void startTimerTask(LocalDateTime scheduledTime, int period, TimeUnit timeUnit) { // 获取TimerTask Bean MyTimerTask task = context.getBean(MyTimerTask.class); ...
首先,我们可以使用`System.currentTimeMillis()`方法来获取当前时间(单位为毫秒)作为基准点,然后在程序执行完毕后再获取一次时间,通过两者之差即可计算出程序的运行时间。例如: ```java long startTime = ...
在`onTick()`方法中,更新TextView的文本。 ```java new CountDownTimer(86400000, 1000) { // 一天的毫秒数,每秒更新一次 @Override public void onTick(long millisUntilFinished) { String timeFormat = ...
- `await(long timeout, TimeUnit unit)`:与`await()`类似,但增加了超时机制,如果在指定时间内其他线程未到达屏障,当前线程将返回并抛出`BrokenBarrierException`。 - `reset()`:手动重置屏障,使得所有等待...
使用方法: Object result = redisLockTemplate.execute("REDIS:LOCK:" + id, 1, TimeUnit.SECONDS, new Callback() { @Override public Object onGetLock() throws InterruptedException { //拿到锁,进行处理,...
本篇文章将详细介绍OkHttp的基础使用方法以及一个简单的封装示例。 首先,了解OkHttp的核心概念: 1. **OkHttpClient**:OkHttp的客户端对象,它是整个网络请求的入口点。通过配置不同的拦截器(Interceptor)、...
下面我们将详细探讨`Future`接口的使用方法。 1. **接口方法解析** - `boolean cancel(boolean mayInterruptIfRunning)`:用于取消任务的执行。如果`mayInterruptIfRunning`为`true`,则尝试中断正在执行的任务;...
**第一种方法** 使用`Observable.create()`和`Schedulers.newThread().createWorker().schedulePeriodically()`: ```java Observable.create(new Observable.OnSubscribe() { @Override public void call...