Java 中的 sleep 方法
Sleep可以让当前线程进行休眠,有如下两个方法:public static void sleep(long millis) throws InterruptedException ,mills 毫秒public static void sleep(long millis, int nanos) throws InterruptedException ,millis 毫秒, nan...
Sleep 可以让当前线程进行休眠,有如下两个方法:
- public static void sleep(long millis) throws InterruptedException ,mills 毫秒
- public static void sleep(long millis, int nanos) throws InterruptedException ,millis 毫秒, nanos 纳秒
如果让线程休眠 3小时15分16秒132毫秒, 使用上述方法则不够优雅,可以使用 TimeUnit 这个枚举类。
需要注意:Sleep方法不会放弃 monitor 锁的所有权,会释放CPU资源。
1. Sleep 简单实例
Sleep 可以让当前线程进行休眠,有如下两个方法。
(1)public static void sleep(long millis) throws InterruptedException ,mills 毫秒
(2)public static void sleep(long millis, int nanos) throws InterruptedException ,millis 毫秒, nanos 纳秒。
线程睡眠一秒。
public class MyYieldStudy {
public static void main(String[] args) {
long start = System.currentTimeMillis();
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
long end = System.currentTimeMillis();
System.out.println(end-start + "毫秒过去了");
}
}
运行截图:
线程睡眠1秒零100000纳秒。
public class MyYieldStudy {
public static void main(String[] args) {
long start = System.currentTimeMillis();
try {
Thread.sleep(1000, 100*1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
long end = System.currentTimeMillis();
System.out.println(end-start + "毫秒过去了");
}
}
2. TimeUnit 枚举类学习
让线程休眠 3小时15分16秒132毫秒。
public class MyYieldStudy {
public static void main(String[] args) {
try {
TimeUnit.HOURS.sleep(3);
TimeUnit.MINUTES.sleep(15);
TimeUnit.SECONDS.sleep(16);
TimeUnit.MILLISECONDS.sleep(132);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
TimeUnit类的实例,第一个是纳秒,后面的分别是微秒、毫秒、秒、 分钟、小时、天。
/**
* Time unit representing one thousandth of a microsecond.
*/
NANOSECONDS(TimeUnit.NANO_SCALE),
/**
* Time unit representing one thousandth of a millisecond.
*/
MICROSECONDS(TimeUnit.MICRO_SCALE),
/**
* Time unit representing one thousandth of a second.
*/
MILLISECONDS(TimeUnit.MILLI_SCALE),
/**
* Time unit representing one second.
*/
SECONDS(TimeUnit.SECOND_SCALE),
/**
* Time unit representing sixty seconds.
* @since 1.6
*/
MINUTES(TimeUnit.MINUTE_SCALE),
/**
* Time unit representing sixty minutes.
* @since 1.6
*/
HOURS(TimeUnit.HOUR_SCALE),
/**
* Time unit representing twenty four hours.
* @since 1.6
*/
DAYS(TimeUnit.DAY_SCALE);
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)