android多線程實現(xiàn)方式 怎樣在Android面試中聊聊多線程?
怎樣在Android面試中聊聊多線程?系統(tǒng)應(yīng)回答:1。線程的四種狀態(tài),新的,可運行的,死的,阻塞的。2等待,睡眠,連接和線程的產(chǎn)量。三。例如wait、notify和notifyAll。4枚舉方法:調(diào)用
怎樣在Android面試中聊聊多線程?
系統(tǒng)應(yīng)回答:1。線程的四種狀態(tài),新的,可運行的,死的,阻塞的。2等待,睡眠,連接和線程的產(chǎn)量。三。例如wait、notify和notifyAll。4枚舉方法:調(diào)用表、future和futuretask。5、線程池。6消息機(jī)制:處理程序、循環(huán)器和消息隊列的執(zhí)行原理。7,任務(wù)。
多個線程可以讀一個變量,只有一個線程可以對這個變量進(jìn)行寫,到底要不要加鎖?
下面簡要說明以下原因:
鎖定是因為操作不是原子的。讓我們用操作一來解釋它??聪旅鎯蓚€圖。
我這個操作需要
看上面的第二個圖,你能很清楚地理解這個過程嗎?
鎖定是為了確保上述三個步驟是原子操作。
回到問題上來,只有一個線程要寫,沒有競爭,所以不需要鎖定。
但是,如果你看第一張圖片,因為主內(nèi)存和本地內(nèi)存的存在
在一個線程寫入后,其他線程無法立即看到它。這就是可見性問題。
添加volatile關(guān)鍵字后,它將在操作后強(qiáng)制工作內(nèi)存和主內(nèi)存同步,以確保其他線程可以立即看到它。