举报投诉联系我们 手机版 热门标签 名动网
您的位置:名动网 > java线程休眠的方法 Java 线程休眠

java线程休眠的方法 Java 线程休眠

2023-03-03 18:20 Java教程

java线程休眠的方法 Java 线程休眠

java线程休眠的方法

Java线程休眠是指在执行某个任务时,使当前线程暂停一段时间,以便其他线程有机会执行。它可以用来实现多个任务之间的同步,也可以用来让一个线程在执行特定任务时暂停一段时间。

Java中有两个方法可用于实现线程休眠:Thread.sleep()和Object.wait()。Thread.sleep()方法可以让当前正在执行的线程暂停一段时间;而Object.wait()方法则是让当前正在执行的对象进入“静止”或“休眠”的状态(即不再处理其他事情),直到其他对象通过notify()或notifyAll()方法将其唤醒。

// 使用 Thread.sleep() 方法实现休眠
public void sleep(long millis) { 
    try { 
        Thread.sleep(millis); 
    } catch (InterruptedException e) { 
        e.printStackTrace(); 
    } 
} 
// 使用 Object.wait() 方法实现休眠 
public void wait(long millis) { 
    try { 
        synchronized (this) {  // 同步代码块   // 调用 wait 时必须要在同步代码块中   // 否则将出错   this.wait(millis);   }   } catch (InterruptedException e) {   e.printStackTrace();   } } 

Thread.sleep()方法可能会造成当前正在运行的代码出错(如果该代码是处于同步代码块中的话)。而Object.wait()方法则不会造成这样的问题。因此,如果要使用Java中的休眠功能来实施各个任务之间的同步(即保证多个任务之间能够有序地执行),则应该使用Object.wait()方法。

Java 线程休眠

Java线程教程 - Java线程休眠


Thread类包含一个静态sleep()方法,它使线程在指定的持续时间内休眠。

Thread.sleep()方法接受超时作为参数。

我们可以指定超时的毫秒数,或毫秒和纳秒。执行此方法的线程将休眠指定的时间。

操作系统调度程序不调度睡眠线程以接收CPU时间。

如果线程在进入休眠之前拥有锁的所有权,则它在休眠期间继续保持这些锁。

sleep()方法抛出java.lang.InterruptedException,你的代码必须处理它。

例子

下面的代码演示了使用Thread.sleep()方法。

public class Main {
  public static void main(String[] args) {
    try {
      System.out.println("sleep for 5  seconds.");
      Thread.sleep(5000);
      // The "main" thread will sleep
      System.out.println("woke up.");
    } catch (InterruptedException e) {
      System.out.println("interrupted.");
    }
    System.out.println("done.");
  }
}

上面的代码生成以下结果。


例2

java.util.concurrent包中的TimeUnit枚举表示各种单位(如毫秒,秒,分钟,小时,天等)的时间测量值。

它有sleep()方法,其工作方式与Thread.sleep()相同。

我们可以使用TimeUnit的sleep()方法来避免持续时间转换:

TimeUnit.SECONDS.sleep(5); // Same as  Thread.sleep(5000);

完整的源代码

import java.util.concurrent.TimeUnit;

public class Main {
  public static void main(String[] args) {
    try {
      System.out.println("sleep for 5  seconds.");
      TimeUnit.SECONDS.sleep(5); // Same as  Thread.sleep(5000);
      // The "main" thread will sleep
      System.out.println("woke up.");
    } catch (InterruptedException e) {
      System.out.println("interrupted.");
    }
    System.out.println("done.");
  }
}

上面的代码生成以下结果。



阅读全文
以上是名动网为你收集整理的java线程休眠的方法 Java 线程休眠全部内容。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
相关文章
© 2024 名动网 mdwl.vip 版权所有 联系我们