如何实现Java多线程模拟只有一个线程在运行

流程步骤

步骤 描述
1 创建一个包含多个线程的线程池
2 使用 CountDownLatch 控制只有一个线程在运行
3 实现线程类,其中包含需要执行的操作
4 在每个线程的执行方法中,通过 CountDownLatch 等待其他线程
5 通过 CountDownLatch 控制只有一个线程运行,其他线程等待
6 启动线程池中的线程

代码实现

创建线程池

// 创建一个包含多个线程的线程池
ExecutorService executor = Executors.newFixedThreadPool(5);

使用 CountDownLatch

// 使用 CountDownLatch 控制只有一个线程在运行
CountDownLatch latch = new CountDownLatch(1);

实现线程类

public class MyThread implements Runnable {
    private String name;
    private CountDownLatch latch;

    public MyThread(String name, CountDownLatch latch) {
        this.name = name;
        this.latch = latch;
    }

    @Override
    public void run() {
        try {
            // 通过 CountDownLatch 等待其他线程
            latch.await();
            System.out.println("Thread " + name + " is running");
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}

启动线程

for (int i = 0; i < 5; i++) {
    executor.execute(new MyThread("Thread " + i, latch));
}

控制只有一个线程运行

// 控制只有一个线程运行,其他线程等待
latch.countDown();

结果展示

pie
    title 线程执行情况
    "Thread 0" : 25
    "Thread 1" : 0
    "Thread 2" : 0
    "Thread 3" : 0
    "Thread 4" : 0

通过以上流程和代码,你可以实现Java多线程模拟只有一个线程在运行。希望你能够理解并顺利实现这个功能,加油!