成都网站建设设计

将想法与焦点和您一起共享

如何使用JavaThread中Sleep()

这篇文章主要为大家展示了如何使用Java Thread中Sleep(),内容简而易懂,希望大家可以学习一下,学习完之后肯定会有收获的,下面让小编带大家一起来看看吧。

公司主营业务:成都网站设计、成都网站制作、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。创新互联建站是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。创新互联建站推出新宾免费做网站回馈大家。

一、API简介

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

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

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

Api文档:

如何使用Java Thread中Sleep()

二、使用方法

注意:在哪个线程里面调用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线程执行一次然后又休眠一秒,依次执行。

如何使用Java Thread中Sleep()

三、示例

下面以一个倒计时的功能来进一步说明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; } } } }

执行结果:

如何使用Java Thread中Sleep()

四、注意问题

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

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

以上就是关于如何使用Java Thread中Sleep()的内容,如果你们有学习到知识或者技能,可以把它分享出去让更多的人看到。


名称栏目:如何使用JavaThread中Sleep()
文章链接:http://chengdu.cdxwcx.cn/article/ipdgjp.html