全国
Java--教育路上

栏目导航

全国站 > Java > 多线程
需求

java线程休眠

摘要:java线程休眠,线程的优先级,优先级高的程序会先执行,而优先级低的程序会后执行,java 线程 休眠。以下是我们为大家整理的,相信大家阅读完后肯定有了自己的选择吧。

标签:
发布时间:
2024-05-08 16:29
信息来源:
网络推荐
浏览次数:
577
java线程休眠

在前面我们讲过线程的优先级,优先级高的程序会先执行,而优先级低的程序会后执行。

如果希望人为地控制线程,使正在执行的线程暂停,将 CPU 让给别的线程,这时可以使用

静态方法 sleep(long millis),该方法可以让当前正在执行的线程暂停一段时间,进人休眠等待

状态。当前线程调用 sleep(long millis)方法后,在指定时间参数(mllis)内是不会执行的,这样其

他的线程就可以得到执行的机会了。

sleep(long mllis)方法声明抛出 lnterrptedExcepion 异常,因此在调用该方法时应该捕获异

常,或者声明抛出该异常。接下来通过一个案例来演示一下 sleep(long millis)方法在程序中

的使用.如例 5-8 所示。

例 14-8 Example08.java

public class Example08 {

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

// 创建一个线程

new Thread(new SleepThread()).start();

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

if (i == 5) {

Thread.sleep(2000); // 当前线程休眠 2 秒

}

System.out.println("主线程正在输出:" + i);

Thread.sleep(500); // 当前线程休眠 500 毫秒

}

}

}

// 定义 SleepThread 类实现 Runnable 接口

class SleepThread implements Runnable {

public void run() {

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

if (i == 3) {

try {

Thread.sleep(2000); // 当前线程休眠 2 秒

} catch (InterruptedException e) {

e.printStackTrace();

}

}

System.out.println("线程一正在输出:" + i);

try {

Thread.sleep(500); // 当前线程休眠 500 毫秒

} catch (Exception e) {

e.printStackTrace();

}

}

}

}

运行结果如图 14-12 所示


from shengerguan

例 14-8 中开启了两个线程,在这两个线程中分别调用了 Thread 的 sleep(500)方法(代

码中的第 10 行和第 27 行),目的是让一个线程在打印一次后休眠 500ms,从而使另一个线程

获得执行的机会,这样就可以实现两个线程的交替执行。

在线程一的 for 循环中,当 i=3 时,调用了 Thread 的 sleep(2000)方法(代码中第 20 行),

使线程休眠 2s,从运行结果可以看出,主线程输出 2 后,线程一没有交替输出 3,而是主线

程技接着输出了 3 和 4,这说明了线程一进入了休眠等待状态。

在主线程的 for 循环中,当 i=5 时,也调用了 Thread 的 sleep(2000)方法(代码的第 7 行),

使线程休眠 2s。从运行结果可以看出,在主线程输出 4 后,下面连续 4 句话都是线程一输

出的。只有当主线程 2s 休眠完毕后,两个线程才会恢复交替执行。

需要注意的是,sleep( )是静态方法,只能控制当前正在运行的线程休眠,而不能控制其

他线程休眠。当休眠时间结束后,线程就会返回到就绪状态,而不是立即开始运行。

上一篇:
java线程的调度
下一篇:
java线程让步
相关推荐
最近更新
学校免费发布信息关闭
如有图片请发邮件到:edu63@foxmail.com,审核后显示

 换一张

确认提交
完善补充本文信息关闭
非常感谢您帮助完善补充本文信息


 换一张

确认提交