【发布时间】:2012-01-01 06:19:13
【问题描述】:
我在我的 tomcat 服务器 (+liferay) 上遇到此异常
java.util.concurrent.RejectedExecutionException
我的课是这样的:
public class SingleExecutor extends ThreadPoolExecutor {
public SingleExecutor(){
super(1, 1,0L, TimeUnit.MILLISECONDS,new LinkedBlockingQueue<Runnable>());
}
@Override
public void execute(Runnable command) {
if(command instanceof AccessLogInsert){
AccessLogInsert ali = (AccessLogInsert)command;
ali.setConn(conn);
ali.setPs(ps);
}
super.execute(command);
}
}
我在super.execute(command); 线上得到了这个异常
当队列已满但 LinkedBlockingQueue 大小为 2^31 时,可能会出现此错误,并且我确信没有那么多命令等待。
一开始一切都很稳定,但在我重新部署战争后它开始发生。这个类不是战争的一部分,而是在 tomcat/lib 的一个 jar 中。
您知道为什么会发生这种情况以及如何解决吗?
【问题讨论】:
标签: java multithreading