java - 一个好的线程设计可以保持运行以监视是否有待处理的请求

标签 java multithreading

我有一个包含 10 个线程的线程池。我想让这 10 个线程继续运行以监视是否有新的请求待处理。这是一个好的设计吗?如果是,我怎样才能让它们继续运行?因为现在,他们完成了一次工作然后就结束了。如果不是,什么是更好的设计?我们有什么方法可以让一个线程继续完成这项工作,而当有一个请求变为未决状态时,第二个线程会继续运行?谢谢

最佳答案

线程 run() 应该在一个循环中运行,像这样:

class Executor extends Thread {
    Runnable task;

    public void run() {
        for (;;) {
            task.run();
            synchronized (this) {
                try {
                    wait();
                } catch (InterruptedException e) {
                }
            }
        }
    }

基于队列的版本:

public void run() {
    for (;;) {
        try {
            Runnable task = queue.take();
            task.run();
        } catch (InterruptedException e) {
        }
    }
}

关于java - 一个好的线程设计可以保持运行以监视是否有待处理的请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44224191/

相关文章:

java - 如何从Macbook上彻底删除jdk 1.8? Scala Web 应用程序项目

java - 如何在AWS CDK java中将目标添加到事件规则?

ios - 线程(异步队列)在 Swift 中是如何工作的?

java - 如何在java中杀死一个线程?

c# - C#查看任务状态的方法

java - 如何访问在 main 方法中创建的对象

java - JPA-映射问题

java - 如何使用Spring的rest模板对查询参数的整个xml值进行URL编码?

c# - 何时使用 BlockingCollection 以及何时使用 ConcurrentBag 而不是 List<T>?

java - java线程的设计模式