我是java.uti.concurrent
包的新成员。我正在尝试使用ExecutorService
来开发套接字列表器类。这是我主要的代码片段:Java并发性:我可以使用工作线程创建池
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
,执行得很好。但是只有在完成我的第一个请求后才接受我的第二个套接字客户端连接。
任何人都可以请让我知道如何解决这个问题。
在此先感谢。
-Venkat Papana
你正在做'MyTask'构造函数中会阻塞的任何东西吗? – SimonJ
谢谢@SimonJ,我发现了这个问题。在我的MyTask构造函数中,我调用run()方法,在内部调用Future的get()方法。 非常感谢SimonJ。 –