PriorityBlockingQueue

ThreadPoolExecutor的PriorityBlockingQueue支持问题

醉酒当歌 提交于 2019-12-10 08:46:02
最近在使用ThreadPoolExecutor时遇到一个问题:当ThreadPoolExecutor使用的BlockingQueue为PriorityBlockingQueue时,会出现异常,原因是java.util.concurrent.FutureTask cannot be cast to java.lang.Comparable。Google之,发现有很多同样的问题,但没有给出解决方案,只能查看源代码以期能找到并解决问题。 首先根据Exception找到问题原因: Exception in thread "main" java.lang.ClassCastException: java.util.concurrent.FutureTask cannot be cast to java.lang.Comparable at java.util.concurrent.PriorityBlockingQueue.siftUpComparable(PriorityBlockingQueue.java:347) at java.util.concurrent.PriorityBlockingQueue.offer(PriorityBlockingQueue.java:475) at java.util.concurrent.ThreadPoolExecutor.execute