Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java并发性:我可以使用工作线程创建池吗_Java_Concurrency_Java.util.concurrent - Fatal编程技术网

Java并发性:我可以使用工作线程创建池吗

Java并发性:我可以使用工作线程创建池吗,java,concurrency,java.util.concurrent,Java,Concurrency,Java.util.concurrent,我不熟悉java.uti.concurrent包。我正在尝试使用ExecutorService开发一个socketlistner类。以下是我的主要代码片段: while (!getExit()) { try{ logger.info("RequestListner.run(): listening for new request..."); Socket socket = server.accept();

我不熟悉
java.uti.concurrent
包。我正在尝试使用
ExecutorService
开发一个socketlistner类。以下是我的主要代码片段:

    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

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


而且,ExecutorService的实现应该能够并行执行给定数量的任务。例如,使用其中的方法并相应地对其进行参数化。

您创建了什么类型的
Executor
ExecutorService

public static final POOL_SIZE = 5;
ExecutorService exec = Executors.newFixedThreadPool(POOL_SIZE);

嗨,Suraj,我实际上只创建了一个ExecutorService对象<代码>服务池好酷..我看到你已经编辑了你的问题…你能告诉我你是如何创建你的executor服务的吗?我正在使用
pool=Executors.newFixedThreadPool(POOLSIZE)在我的
Main
MyTask
程序中。嗨,阿玛,是的,我正在创建执行器。仅newFixedThreadPool
pool=Executors.newFixedThreadPool(POOLSIZE)在我的
Main
程序中与在我的
MyTask
prog中一样小。你在
MyTask
构造函数中做了什么会阻塞的事情吗?谢谢@SimonJ,我发现了问题。在MyTask构造函数中,我调用run()方法,该方法在内部调用Future的get()方法。非常感谢你,西蒙吉。