0

我是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());
        }
    }

我的MyTask班级有一个ExecutorService对象,它将提交MyTask2任务。(我的意图是为我的每个套接字连接执行多线程处理)

我的应用程序正在接受我的套接字客户端请求并创建池MyTask2,执行良好。但是只有在完成我的第一个请求后才接受我的第二个套接字客户端连接。

任何人都可以让我知道如何解决这个问题。

提前致谢。

-文卡特·帕帕纳

4

2 回答 2

1

你创造了什么ExecutorExecutorService

public static final POOL_SIZE = 5;
ExecutorService exec = Executors.newFixedThreadPool(POOL_SIZE);
于 2011-08-27T12:49:22.177 回答
0

您不需要创建 ExecutorService 的“池”,只需使用一个 ExecutorService,它本身就在内部管理一个线程池。

而且您的 ExecutorService 实现应该能够并行执行给定数量的任务。例如,在其中使用Executors.new*ThreadPool()方法并相应地对其进行参数化。

于 2011-08-27T12:46:35.593 回答