我有一个ThreadPoolExecutor的使用LinkedBlockingDequeue建成,我想操纵底层的队列中,但是阅读本文档中,使我非常紧张。
队列维护
方法getQueue()允许访问工作队列用于监控和调试的目的。强烈建议不要将此方法用于任何其他目的。提供两个提供的方法remove(java.lang.Runnable)和purge()可用于在大量排队的任务被取消时协助存储回收。
具体我希望能够
- 检查队列,查看是否元素已经存在。我认为这很好,因为不需要锁定来查看队列中的元素。
- 我想根据某些信号对队列重新排序。这显然很麻烦。我想知道是否有一个首选的方法来做到这一点,这样我就不会搞乱其他用途的队列。
感谢
正如文档注释,您不应该从该方法控制队列。你应该从传递给你的'ThreadPoolExecutor'的队列中控制它。 – pickypg
但是,这样还是不能解决线程问题的风险?我想如果我调用getQueue(),就像修改我传入的实际队列对象一样。 – Jon
我不认为我可以按照其他问题中的建议使用PriorityComparator,因为PriorityComparator在队列中没有提供对元素进行重新排序的方法。 – Jon