| 失效鏈接處理 |
|
java面試題_多線程(68題) PDF 下載
轉(zhuǎn)載自:http://java.python222.com/article/1993
相關(guān)截圖:
![]() 主要內(nèi)容:
1. 什么是線程?
1、線程是操作系統(tǒng)能夠進(jìn)?行行運(yùn)算調(diào)度的最?小單位,它被包含在進(jìn)程之中,是進(jìn)程中的實(shí)際運(yùn)作單位,可以使?用多線程對
進(jìn)?行行運(yùn)算提速。
?如,如果?個線程完成?個任務(wù)要100毫秒,那么??個線程完成改任務(wù)只需10毫秒
2. 什么是線程安全和線程不安全?
1、線程安全
線程安全: 就是多線程訪問時,采?用了了加鎖機(jī)制,當(dāng)?一個線程訪問該類的某個數(shù)據(jù)時,進(jìn)?行行保護(hù),其他線程不不能進(jìn)?行行
訪問,直到該線程讀取完,其他線程才可使?用。不不會出現(xiàn)數(shù)據(jù)不不?一致或者數(shù)據(jù)污染。
Vector 是?用同步?方法來實(shí)現(xiàn)線程安全的, ?而和它相似的ArrayList不不是線程安全的。
2、線程不不安全
線程不不安全:就是不不提供數(shù)據(jù)訪問保護(hù),有可能出現(xiàn)多個線程先后更更改數(shù)據(jù)造成所得到的數(shù)據(jù)是臟數(shù)據(jù)
線程安全問題都是由全局變量量及靜態(tài)變量量引起的。
若每個線程中對全局變量量、靜態(tài)變量量只有讀操作,?而?無寫操作,?一般來說,這個全局變量量是線程安全的;若有多個
線程同時執(zhí)?行行寫操作,?一般都需要考慮線程同步,否則的話就可能影響線程安全。
3. 什么是?旋鎖?
?自旋鎖是SMP架構(gòu)中的?一種low-level的同步機(jī)制。
1、當(dāng)線程A想要獲取?一把?自旋鎖?而該鎖?又被其它線程鎖持有時,線程A會在?一個循環(huán)中?自旋以檢測鎖是不不是已經(jīng)可?用了了。
2、?自選鎖需要注意:
由于?自旋時不不釋放CPU,因?而持有?自旋鎖的線程應(yīng)該盡快釋放?自旋鎖,否則等待該?自旋鎖的線程會?一直在那?里里?自
旋,這就會浪費(fèi)CPU時間。
持有?自旋鎖的線程在sleep之前應(yīng)該釋放?自旋鎖以便便其它線程可以獲得?自旋鎖。
3、?目前的JVM實(shí)現(xiàn)?自旋會消耗CPU,如果?長時間不不調(diào)?用doNotify?方法,doWait?方法會?一直?自旋,CPU會消耗太?大
4、?自旋鎖?比較適?用于鎖使?用者保持鎖時間?比較短的情況,這種情況?自旋鎖的效率?比較?高。
5、?自旋鎖是?一種對多處理理器?相當(dāng)有效的機(jī)制,?而在單處理理器??非搶占式的系統(tǒng)中基本上沒有作?用。
|




蘇公網(wǎng)安備 32061202001004號


