Java sleep():设置线程休眠(附带实例)
线程的调度是按照线程的优先级的高低顺序抢占 CPU 资源的,优先级高的线程会优先抢占 CPU 资源,线程不执行完,优先级低的线程就无法抢占 CPU 资源。
Java 的 Thread 类提供了 sleep() 方法,该方法可使正在执行的线程进入阻塞状态,也叫线程休眠。休眠时间内该线程是不运行的,休眠时间结束后线程才继续运行。
如果想让优先级低的线程抢占 CPU 资源,就需要调用 sleep() 方法,该方法是人为地控制线程,让正在执行的线程暂停一段固定的时间,在暂停的时间内,线程让出 CPU 资源,让优先级低的线程有机会运行。休眠方法结束之后,线程将进入可运行状态。
sleep() 方法有两种形式,具体如下:
使用 sleep(long millis) 方法时会报 InterruptedException 异常,此时必须捕获异常或抛出异常。
接下来,通过案例来演示线程休眠:
Java 的 Thread 类提供了 sleep() 方法,该方法可使正在执行的线程进入阻塞状态,也叫线程休眠。休眠时间内该线程是不运行的,休眠时间结束后线程才继续运行。
如果想让优先级低的线程抢占 CPU 资源,就需要调用 sleep() 方法,该方法是人为地控制线程,让正在执行的线程暂停一段固定的时间,在暂停的时间内,线程让出 CPU 资源,让优先级低的线程有机会运行。休眠方法结束之后,线程将进入可运行状态。
sleep() 方法有两种形式,具体如下:
static void sleep(long millis) static void sleep(long millis, int nanos)
- 第 1 种中的参数指的是线程休眠的毫秒数;
- 第 2 种中的参数指的是线程休眠的毫秒数和纳秒数。
使用 sleep(long millis) 方法时会报 InterruptedException 异常,此时必须捕获异常或抛出异常。
接下来,通过案例来演示线程休眠:
import java.text.SimpleDateFormat; import java.util.Date; public class Demo { public static void main(String[] args) throws InterruptedException { // 创建MyThread实例 System.out.println("吃饭时吃菜的顺序:"); MyThread myThread1 = new MyThread("水煮肉片"); MyThread myThread2 = new MyThread("酱焖茼蒿"); MyThread myThread3 = new MyThread("树根炒树皮"); myThread1.setPriority(Thread.MIN_PRIORITY); // 设置优先级 myThread2.setPriority(Thread.MAX_PRIORITY); myThread3.setPriority(Thread.NORM_PRIORITY); myThread3.start(); // 开启线程 Thread.sleep(2000); // 设置线程休眠 myThread2.start(); Thread.sleep(2000); myThread1.start(); } } class MyThread extends Thread { private final String Cuisine; public MyThread(String Cuisine) { this.Cuisine = Cuisine; } @Override public void run() { for (int i = 0; i < 5; i++) { System.out.println(Cuisine + i); } } }程序的运行结果如下:
吃饭时吃菜的顺序
树根炒树皮0
树根炒树皮1
树根炒树皮2
树根炒树皮3
树根炒树皮4
酱焖茼蒿0
酱焖茼蒿1
酱焖茼蒿2
酱焖茼蒿3
酱焖茼蒿4
水煮肉片0
水煮肉片1
水煮肉片2
水煮肉片3
水煮肉片4