Java多线程:主线程睡眠,子线程执行完毕唤醒
1. 简介
在Java中,多线程是并发编程的核心概念之一。通过多线程,我们能够同时执行多个任务,提高程序的效率和性能。在多线程编程中,有时候我们需要实现主线程睡眠,等待子线程执行完毕后再唤醒主线程继续执行。本文将教会您如何实现这一功能。
2. 流程概述
下面是实现“Java多线程主线程睡眠,子线程执行完毕唤醒”的整体流程概述,我们可以使用一个表格来展示每一步的具体内容。
步骤 | 描述 |
---|---|
1 | 创建一个继承自Thread 类的子类,并重写run() 方法 |
2 | 在子线程的run() 方法中编写子线程的逻辑 |
3 | 在主线程中创建子线程的实例,并调用start() 方法启动子线程 |
4 | 在主线程中使用Thread.sleep() 方法使主线程睡眠 |
5 | 在子线程的逻辑执行完毕后,唤醒主线程继续执行 |
3. 代码实现
3.1 创建子线程
首先,我们需要创建一个继承自Thread
类的子类,并重写run()
方法。在run()
方法中编写子线程的逻辑。
class MyThread extends Thread {
@Override
public void run() {
// 子线程的逻辑代码
}
}
3.2 子线程逻辑
在子线程的run()
方法中编写子线程的逻辑。假设我们要在子线程中打印一些信息。
class MyThread extends Thread {
@Override
public void run() {
// 子线程的逻辑代码
for (int i = 0; i < 5; i++) {
System.out.println("子线程执行,i = " + i);
}
}
}
3.3 主线程创建子线程并启动
在主线程中,我们需要创建子线程的实例,并调用start()
方法启动子线程。
public class MainThread {
public static void main(String[] args) {
MyThread myThread = new MyThread(); // 创建子线程实例
myThread.start(); // 启动子线程
}
}
3.4 主线程睡眠
在主线程中使用Thread.sleep()
方法使主线程睡眠。这样主线程将会暂停执行一段时间。
public class MainThread {
public static void main(String[] args) {
MyThread myThread = new MyThread(); // 创建子线程实例
myThread.start(); // 启动子线程
try {
Thread.sleep(2000); // 主线程睡眠2秒
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
3.5 子线程执行完毕后唤醒主线程
在子线程的逻辑执行完毕后,我们可以通过Thread.join()
方法唤醒主线程继续执行。join()
方法会等待子线程执行完毕后再继续执行主线程。
class MyThread extends Thread {
@Override
public void run() {
// 子线程的逻辑代码
for (int i = 0; i < 5; i++) {
System.out.println("子线程执行,i = " + i);
}
}
}
public class MainThread {
public static void main(String[] args) {
MyThread myThread = new MyThread(); // 创建子线程实例
myThread.start(); // 启动子线程
try {
myThread.join(); // 等待子线程执行完毕
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("主线程执行");
}
}
4. 状态图
下面是该多线程程序的状态图,使用mermaid语法的state