現象描述
項目在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
的實例對象