生成java实现一个任务队列,往队列里放任务,自动按顺序执行,只能执行一个任务的代码

生成java实现一个任务队列,往队列里放任务,自动按顺序执行,只能执行一个任务的代码
用户933567818
2024年03月12日
|
浏览 112
Java

答案是使用BlockingQueue结合ExecutorService来实现一个任务队列,往队列里放任务,自动按顺序执行,只能执行一个任务的Java代码。以下是示例代码:

复制代码
import java.util.concurrent.*;

public class TaskQueue {
    private final BlockingQueue<Runnable> taskQueue = new LinkedBlockingQueue<>();
    private final ExecutorService executor = Executors.newSingleThreadExecutor();

    public TaskQueue() {
        executor.execute(() -> {
            try {
                while (true) {
                    taskQueue.take().run();
                }
            } catch (InterruptedException e) {
                Thread.currentThread().interrupt();
            }
        });
    }

    public void addTask(Runnable task) {
        taskQueue.add(task);
    }

    public void shutdown() {
        executor.shutdown();
    }

    public static void main(String[] args) {
        TaskQueue taskQueue = new TaskQueue();

        taskQueue.addTask(() -> {
            System.out.println("Task 1 executed");
        });

        taskQueue.addTask(() -> {
            System.out.println("Task 2 executed");
        });

        taskQueue.addTask(() -> {
            System.out.println("Task 3 executed");
        });

        taskQueue.shutdown();
    }
}

这段代码创建了一个TaskQueue类,使用BlockingQueue来存储任务,并且通过ExecutorServicenewSingleThreadExecutor方法来确保只有一个线程在执行任务,从而实现了往队列里放任务,自动按顺序执行,只能执行一个任务的功能。

我要提问
复制内容
分享给好友
AI编程问答网 免责声明:
以上内容除特别注明外均来源于网友提问,AI编程问答网回答,权益归原著者所有;