繁体   English   中英

Java并发性:我可以使用辅助线程创建池吗?

[英]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

您创建了哪种ExecutorExecutorService

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM