Android之實現具有優先順序的執行緒池

2021-07-07 07:34:44 字數 1653 閱讀 4070

在android開發中為了復用執行緒以及節約執行緒開銷,執行緒池是使用較多的一種方法,有時也會有這樣的需求,不同的執行緒執行任務的緊急度是不一樣的,後加入執行緒池佇列的任務可能需要優先處理,在threadpoolexecutor的建構函式中需要傳遞乙個繼承blockqueue的子類。

在sdk中已經提供了乙個

priorityblockingqueue這樣的優先順序阻塞佇列,我們要做的就是擴充套件runnable,新增乙個優先順序的屬性

public abstract class runwithpriority implements runnable

public int getpriority()

}

然後就是為

priorityblockingqueue建構函式的第二個引數,繼承

comparator實現乙個比較優先順序的類

public class comparepriorityimplements comparator

}

完成了這個類之後我們就能實際使用了,寫乙個test類

public class test  catch (interruptedexception ex) 

system.out.println(this.getpriority() + " finished");

}});

exe.execute(new runwithpriority(10) catch (interruptedexception ex)

system.out.println(this.getpriority() + " finished");

}});

exe.execute(new runwithpriority(5) catch (interruptedexception ex)

system.out.println(this.getpriority() + " finished");

}});

exe.execute(new runwithpriority(3) catch (interruptedexception ex)

system.out.println(this.getpriority() + " finished");

}});

exe.execute(new runwithpriority(4) catch (interruptedexception ex)

system.out.println(this.getpriority() + " finished");

}});

}}

我們通過輸出log來看

10 started

2 started

10 finished

5 started

2 finished

4 started

5 finished

3 started

4 finished

3 finished

可以看出核心執行緒是2個 也就是剛開始進入的10 和 2 , 後面的呼叫順序是5、3、4,在佇列中經過優先順序排列變成了5、4、3

,真正的按照優先順序的大小進行排列呼叫順序

android 程序優先順序

程序 process 的優先順序 從高到低 前台程序 foreground process 1 當前使用者操作的activity所在程序 2 繫結了當前使用者操作的activity的service所在程序 3 呼叫了startforeground 的service 1 提高service優先順序的方...

Android程序優先順序

android將程序的優先順序分為5個層次,按照優先順序由高到低排列如下 前台程序 foreground process 它表明使用者正在與該程序進行互動操作,android系統依據下面的條件來將乙個程序標記為前台程序 可見程序 visible process 它表明雖然該程序沒有持有任何前台元件,...

Android程序優先順序

程序間的優先順序關係 執行耗時操作的程序選擇 參考資料 android在記憶體緊張的時候會對程序採取一定的策略來終止程序,而這些策略是往往是根據程序的優先順序來出處理的 優先順序由高到低排列 指正在與使用者進行互動的應用程序,該程序數量較少,是最高優先順序程序,系統一般不會終止該程序,而判斷為前台程...