[英]Java Concurrency: Can I create a pool using worker thread
我是java.uti.concurrent
包的新手。 我正在尝试使用ExecutorService
开发套接字列表器类。 这是我的主要代码段:
while (!getExit()) {
try{
logger.info("RequestListner.run(): listening for new request...");
Socket socket = server.accept();
logger.info("RequestListner.run(): got new request");
MyTask task = new MyTask(socket);
pool.submit(task);
logger.info("RequestListner.run(): submitted new request to pool");
}catch(Exception e) {
logger.error("RequestListner.run(): Exception: "+e.getMessage());
}
}
My MyTask
类具有ExecutorService
对象,它将提交MyTask2
任务。 (我的目的是对我的每个套接字连接执行多线程处理)
我的应用程序接受我的套接字客户端请求并创建MyTask2
池,执行正常。 但是仅在完成我的第一个请求后才接受我的第二个套接字客户端连接。
有人可以让我知道如何解决此问题。
提前致谢。
-Venkat Papana
您创建了哪种Executor
或ExecutorService
?
public static final POOL_SIZE = 5;
ExecutorService exec = Executors.newFixedThreadPool(POOL_SIZE);
您无需创建ExecutorService的“池”,只需使用一个ExecutorService即可,它本身在内部管理线程池。
而且,您的ExecutorService的实现应能够并行执行给定数量的任务。 例如,在其中使用Executors.new * ThreadPool()方法并相应地对其进行参数化。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.