【发布时间】:2011-08-27 12:40:44
【问题描述】:
我是 java.uti.concurrent 包的新手。我正在尝试使用ExecutorService 开发一个套接字侦听器类。这是我的主要代码 sn-p:
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 池,执行良好。但是只有在完成我的第一个请求后才接受我的第二个套接字客户端连接。
谁能告诉我如何解决这个问题。
提前致谢。
-文卡特帕帕纳
【问题讨论】:
-
你在
MyTask构造函数中做了什么会阻塞的事情吗? -
谢谢@SimonJ,我找到了问题。在我的 MyTask 构造函数中,我正在调用内部调用 Future 的 get() 方法的 run() 方法。非常感谢 SimonJ。
标签: java concurrency java.util.concurrent