c语言编程笔录

首页 >   > 笔记大全

笔记大全

Java项目中如何让线程休眠

更新时间:2023-07-14

什么是线程休眠?

线程是程序并发执行的基本单位,它可以让程序在运行的同时利用多核CPU的优势来提高计算速度。而线程休眠则是线程的一种状态,它会使当前执行的线程暂停运行一段时间,让其他线程有机会运行。线程休眠是一种常见的操作,它在很多地方都有应用场景,如等待其他线程的完成、时间等待等。

try {
    Thread.sleep(1000);
} catch (InterruptedException e) {
    e.printStackTrace();
}

如何让线程休眠?

在Java中休眠线程只需要使用Thread类的sleep(long millis)方法即可,其中参数是休眠的时间长度,单位为毫秒。当线程执行到该方法时,它会暂停执行指定的时间,这时其他线程有机会执行。

public class SleepThread implements Runnable {

    @Override
    public void run() {
        System.out.println("线程开始执行...");
        try {
            Thread.sleep(2000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("线程执行完毕...");
    }

    public static void main(String[] args) {
        SleepThread sleepThread = new SleepThread();
        Thread thread = new Thread(sleepThread);
        thread.start();
    }
}

如何中断休眠的线程?

在某些情况下,我们需要中断休眠的线程,以便让它立即回到运行状态。可以使用线程的interrupt方法来中断休眠的线程,当线程被中断时,会抛出一个InterruptedException异常。

public class SleepThread implements Runnable {

    @Override
    public void run() {
        System.out.println("线程开始执行...");
        try {
            Thread.sleep(2000);
        } catch (InterruptedException e) {
            System.out.println("线程被中断...");
            e.printStackTrace();
        }
        System.out.println("线程执行完毕...");
    }

    public static void main(String[] args) throws InterruptedException {
        SleepThread sleepThread = new SleepThread();
        Thread thread = new Thread(sleepThread);
        thread.start();

        // 休眠5秒后中断线程
        Thread.sleep(5000);
        thread.interrupt();
    }
}

线程休眠的注意事项

线程休眠虽然能够提高程序的性能,但是也需要注意一些细节问题:

  • 线程休眠时会释放它所持有的锁,如果其他线程需要这个锁就会抢占资源。
  • 在休眠时设定时间不一定是准确的,如果其他线程正在繁忙地执行,那么会导致休眠时间延迟。
  • 线程休眠的时间不应该过长,否则会对程序的响应性造成影响。