2017-07-25 64 views
0

我目前正在用Java編寫的Android項目。 我有一個儀表板,可以查詢雲數據庫中的數據並在圖表上呈現數據。但數據必須在收到時處理。
我有4個AsyncTasks,在doInBackground覆蓋方法同時處理接收到的數據(或者是應該)。這個過程非常緩慢,我試過究竟做線程的優先級做在Java中

Thread.currentThread().setPriority(Thread.MAX_PRIORITY); 

在每個AsyncTask中。
然而,4個AsynkTasks似乎一切發生一前一後,是由於改變線程最高的優先級?當一個線程優先級被改變時,它是否會停止所有其他線程並繼續執行,直到完成?

+0

從上'Thread'的JavaDoc:「每個線程都有具有更高優先級的線程優先與執行線程的優先級。較低的優先級。「 – Thomas

+0

即使更改優先級,除非他們是真正的小任務,他們應該仍然表現出一定程度的並行性。發佈更多代碼以查看其他地方是否存在某種錯誤。 – bracco23

回答

3

來源:https://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html

每個線程都有一個優先事項。執行 優先級較高的線程優先於較低優先級的線程。每個線程可能或可能不會被標記爲守護進程。當某個線程 運行的代碼創建一個新的Thread對象,新線程的初始優先級設置 等於創建線程的優先級,並且是一個守護線程 當且僅當創建線程是守護進程。

(作注:此信息被發現在谷歌搜索 「Java的Thread.MAX_PRIORITY」 看着上方結果)

+0

不錯的一個!格式作爲報價,所以我們都可以看到這不是你的意見 –

2

From the documentation

每個線程都有一個優先事項。具有較高優先級的線程與較低優先級執行 在偏好到螺紋上。 ......當 運行某個線程的代碼創建一個新的Thread對象,新線程都有 優先初始設定爲等於創建線程的優先級。

這實際上只是一個提示,告訴調度程序大致執行線程的順序。它可以,也可能會忽略你。

如果您已設置的所有線程的最高優先級,這實際上是相同的,在默認的離開他們。正如你可能要告訴你的老闆,如果一切是當務之急那麼沒有什麼是當務之急:)