2014-06-25 63 views
1

我構建了一個應用程序,它可以在不着色的情況下對來自位圖的像素進行重新着色,而只需逐個像素的CPU進行着色。這對我來說足夠快,但我想知道CPU是否默認使用了多線程,而沒有在編程中實際使用它?默認情況下是Android多線程而不使用它?

+0

你能提供你的代碼嗎? :) –

+0

哦,我只是問自己,如果可能的話,不是爲了解決任何問題。該代碼是一個非常具體的實現。你想要自己的代碼? – csnewb

+0

哦,不,但謝謝你! :P我只是好奇,如果你正在調用自己創建線程的任何對象。 :D –

回答

3

Documentation


默認情況下,應用程序啓動運行的線程(稱爲 「主」)。此線程非常重要,因爲它負責將事件分派到相應的用戶界面小部件 (包括繪圖事件)。它也是您的應用程序與來自Android UI工具包 (來自android.widget和android.view包的組件)交互組件的線程。如 這樣,主線程有時也被稱爲UI線程。

和螺紋的關係,以CPU爲(多線程例子):


多線程程序的這種優勢使得它在具有多個或多計算機系統快 操作因爲程序的線程自然會藉助 來真正實現併發執行。在這種情況下,程序員必須小心避免競態條件和其他非直觀行爲。爲了使數據正確地被操作,線程通常需要及時會合以便 以正確的順序處理數據。爲了防止在修改過程中同時修改公共數據或 ,中的線程還可能需要 互斥操作(通常使用信號量實現)。大意使用這樣的原語可能會導致死鎖。

多線程的另一種用途,即使對單CPU系統也適用, 是應用程序對輸入保持響應的能力。在 單線程程序中,如果主執行線程阻塞了長時間運行的任務,整個應用程序可能會凍結。通過 將此類長時間運行的任務移動到與主執行線程同時運行 的工作者線程,可能使 應用程序在後臺執行任務 時仍對用戶輸入做出響應。另一方面,在大多數情況下,多線程並不是保持程序響應的唯一方式,使用非阻塞I/O 和/或Unix信號可用於獲得類似結果。

長話短說。不,你的程序不會是多線程的,除非你明確告訴它。而在Android的情況下,AsyncTask將是與UIThread(main)交互時要走的路線。

+0

謝謝,這就是我一直在尋找的東西。 – csnewb

+0

沒問題:) @csnewb –

相關問題