Java中的sleep方法用于暂停当前线程的执行指定时间。该方法属于Thread类,允许临时挂起线程而不终止它。sleep方法可能抛出InterruptedException,因此必须使用try-catch块处理。
更多关于Java多线程教程可点击系列专栏:https://java.didispace.com/java-multithreading/
目录
1. sleep方法变体
2. 使用sleep(long millis)方法示例
3. 使用sleep(long millis, int nanos)方法示例
4. 处理InterruptedException
5. 结论
1. sleep方法变体
sleep(long millis)
暂停当前线程执行指定毫秒数。
public static void sleep(long millis) throws InterruptedExceptionsleep(long millis, int nanos)
暂停当前线程执行指定毫秒数+纳秒数。
public static void sleep(long millis, int nanos) throws InterruptedException2. 使用sleep(long millis)方法示例
class MyThread extends Thread {
public MyThread(String name) {
super(name); // 设置线程名称
}
@Override
public void run() {
for (int i = 0; i < 5; i++) {
System.out.println(Thread.currentThread().getName() + "正在运行,迭代次数:" + i);
try {
Thread.sleep(1000); // 休眠1000毫秒(1秒)
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
MyThread thread1 = new MyThread("线程-1");
MyThread thread2 = new MyThread("线程-2");
thread1.start(); // 启动线程1
thread2.start(); // 启动线程2
}
}输出:
线程-1正在运行,迭代次数:0
线程-2正在运行,迭代次数:0
线程-1正在运行,迭代次数:1
线程-2正在运行,迭代次数:1
...(后续每隔1秒输出一次)3. 使用sleep(long millis, int nanos)方法示例
class MyThread extends Thread {
public MyThread(String name) {
super(name);
}
@Override
public void run() {
for (int i = 0; i < 5; i++) {
System.out.println(Thread.currentThread().getName() + "正在运行,迭代次数:" + i);
try {
// 休眠1000毫秒+500000纳秒(0.5毫秒)
Thread.sleep(1000, 500000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
MyThread thread1 = new MyThread("线程-1");
MyThread thread2 = new MyThread("线程-2");
thread1.start();
thread2.start();
}
}输出:
线程-1正在运行,迭代次数:0
线程-2正在运行,迭代次数:0
...(后续每隔1.0005秒输出一次)4. 处理InterruptedException
class MyThread extends Thread {
public MyThread(String name) {
super(name);
}
@Override
public void run() {
for (int i = 0; i < 5; i++) {
System.out.println(Thread.currentThread().getName() + "正在运行,迭代次数:" + i);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
System.out.println(Thread.currentThread().getName() + "被中断!");
return; // 中断后退出run方法
}
}
}
public static void main(String[] args) {
MyThread thread1 = new MyThread("线程-1");
thread1.start();
try {
Thread.sleep(3000); // 主线程休眠3秒
thread1.interrupt(); // 中断线程1
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}输出:
线程-1正在运行,迭代次数:0
线程-1正在运行,迭代次数:1
线程-1正在运行,迭代次数:2
线程-1被中断!5. 结论
Java的sleep方法用于控制线程执行流程。通过sleep(long millis)和sleep(long millis, int nanos)方法,可精确控制线程暂停时间。处理InterruptedException至关重要,确保程序能优雅处理中断。
更多关于Java多线程教程可点击系列专栏:https://java.didispace.com/java-multithreading/