【发布时间】:2010-06-07 22:03:00
【问题描述】:
在 Java 中,要编写一个向服务器发出请求的库,我通常会实现某种调度程序(与 Twitter4J 库中的调度程序不同:http://github.com/yusuke/twitter4j/blob/master/twitter4j-core/src/main/java/twitter4j/internal/async/DispatcherImpl.java)来限制连接数,以执行异步任务等
这个想法是创建 N 个线程。一个“任务”排队并通知所有线程,其中一个线程准备好后,将从队列中弹出一个项目,完成工作,然后返回等待状态。如果所有线程都在忙于一个任务,那么这个任务只是排队,下一个可用的线程将接受它。
这保持了与 N 的最大连接数,并允许最多 N 个任务同时运行。
我想知道我可以用 Actor 创建什么样的系统来完成同样的事情?有没有办法拥有 N 个 Actor,当一条新消息准备好时,将它传递给一个 Actor 来处理它 - 如果所有 Actor 都忙,就将消息排队?
【问题讨论】:
-
您所描述的是一个线程池,因为 Java 5 它在标准库中,请参阅包
java.util.concurrent(类ThreadPoolExecutor)。
标签: scala