教育路上

全国站>Java>多线程>java线程休眠
发布需求
填写需求信息关闭
我们会根据您的需求匹配

姓      名:

意向城市:

留      言:

手机号码:

验  证  码:  换一张

确认提交

java线程休眠

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

2022-05-19 13:42网络推荐

发布时间:
2022-05-19 13:42
信息来源:
网络推荐
浏览次数:
240
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线程让步
标签:
网友评论
发布评论

访客的评论 2022/12/01 02:27

文中描述的是准确的吗,如何报名!

相关推荐
我也来发表评价关闭
我对该内容的评价:
0
评价500
验证码: 看不清 换一张
提交 (匿名发布,无须担心别人知道您的身份)