现象描述
项目在idea中可以正常打包,部署到服务器执行mvn clean package
命令报错,报错信息如图所示
翻译过来大体就是submit方法是个模棱两可的引用,在看一下这个方法的声明
ThreadPoolUtils.getInstance().getThreadPoolExecutor().submit(()->{
while (true){
Card card = null;
try {
card = CARD_QUEUE.take();
log.info("队列的长度:{},\n 队列中包含card:{}",CARD_QUEUE.size(),card);
cardService.handlerCard(card);
} catch (Exception e) {
log.info("处理error-> card:{}",card);
e.printStackTrace();
}
}
});
这里采用了匿名内部类的写法,new了一个Runnable
,在线程池提交了一个任务,问题就出现在这个匿名内部类身上。
线程池的submit方法截图
以上是重载的submit
方法,如果是匿名内部类,编译是不知道到底创建的哪个类的对象,所以就报错了
解决方式
明确是Runnable
的实例对象