java sleep方法使用_Java Thread之Sleep()使用方法总结

一、API简介

Thread.sleep()是Thread类的一个静态方法,使当前线程休眠,进入阻塞状态(暂停执行),如果线程在睡眠状态被中断,将会抛出IterruptedException中断异常。。主要方法如下:

【a】sleep(long millis)  线程睡眠 millis 毫秒

【b】sleep(long millis, int nanos)  线程睡眠 millis 毫秒 + nanos 纳秒

Api文档:

fb626509181e7d97256ffe4ca6677c5b.png

二、使用方法

注意:在哪个线程里面调用sleep()方法就阻塞哪个线程。

public class SleepDemo {

public static void main(String[] args) throws InterruptedException {

Process process = new Process();

Thread thread = new Thread(process);

thread.setName("线程Process");

thread.start();

for (int i = 0; i < 10; i++) {

System.out.println(Thread.currentThread().getName() + "-->" + i);

//阻塞main线程,休眠一秒钟

Thread.sleep(1000);

}

}

}

/**

* 线程类

*/

class Process implements Runnable {

@Override

public void run() {

for (int i = 0; i < 10; i++) {

System.out.println(Thread.currentThread().getName() + "-->" + i);

//休眠一秒钟

try {

Thread.sleep(1000);

} catch (InterruptedException e) {

e.printStackTrace();

}

}

}

}

执行结果:main线程执行一次之后休眠一秒钟,让出cpu,此时Process线程执行一次然后又休眠一秒,依次执行。

d41dfe81d2f381ed7c11d992842ac331.png

三、示例

下面以一个倒计时的功能来进一步说明sleep()方法的使用:

/**

* @Description: 线程休眠Sleep()方法

* @Author: weishihuai

* @Date: 2018/11/11 21:31

*

* 1. 注意:sleep()方法使用的位置,如果使用在main线程执行代码中,则阻塞的是main线程。如果在其他线程执行的代码中,则阻塞的是执行这些代码的线程

* 2. 案例: 倒计时功能

*/

public class TestSleepThread {

public static void main(String[] args) throws InterruptedException {

countDown(10000);

}

/**

* 倒计时方法

*

* @param mills 倒计时开始的时间距离当前时间多少毫秒

*/

public static void countDown(long mills) {

Date endDate = new Date(System.currentTimeMillis() + mills);

long endTime = endDate.getTime();

while (true) {

System.out.println(new SimpleDateFormat("hh:mm:ss").format(endDate));

//下一秒时间

endDate = new Date(endDate.getTime() - 1000);

//休眠一秒钟

try {

Thread.sleep(1000);

} catch (InterruptedException e) {

e.printStackTrace();

}

if (endTime - endDate.getTime() > mills) {

break;

}

}

}

}

执行结果:

956d675ec3298900285b1322eb3f4152.png

四、注意问题

【a】sleep()方法是Thread类的静态方法,如果调用线程对象.sleep()方法并不是该线程就休眠,反正在哪一个线程里面执行了sleep()方法哪一个线程就休眠。

【b】线程睡眠到期自动苏醒,并返回到可运行状态(就绪),不是运行状态。

到此这篇关于Java Thread之Sleep()使用方法总结的文章就介绍到这了,更多相关Java Thread Sleep()内容请搜索猪先飞以前的文章或继续浏览下面的相关文章希望大家以后多多支持猪先飞!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值