我读过许多关于优先级倒置的帖子,但我仍然无法澄清我对其中一些部分的理解。如果有人能澄清我的问题,我会很高兴的。
让我们先描述一下情况。我有一个伪代码,这是不言自明的。
我有一个共享资源- int;下面是由三个线程执行的函数--低任务p1、中等优先级任务p2、高优先级任务p3。
/**Shared resource **/
int t;
/** Function that will be executed by three threads **/
void func()
{
printf("hello..world"); /** line number 11**/
我有大量的图片要从服务器上获取,并且我想获取一些优先级高于其他图片的图片,所以我实现了自己的ThreadPoolExecutor,它返回一个实现Comparable的FutureTask,但它似乎不起作用。这些任务或多或少是按照我添加到队列中的顺序处理的。我调试了我的ThreadPoolExecutor的BlockingQueue,发现当我用更高的优先级添加我的Runnable时,它不会一直移到队列的顶部。以下是代码
public class PriorityThreadPoolExecutor extends ThreadPoolExecutor {
public Priority