1、如何控制某個方法允許并發(fā)訪問線程的個數?
semaphore.acquire() 請求一個信號量,這時候的信號量個數-1(一旦沒有可使用的信號量,也即信號量個數變?yōu)樨摂禃r,再次請求的時候就會阻塞,直到其他線程釋放了信號量)
semaphore.release() 釋放一個信號量,此時信號量個數+1
2、synchronized 和volatile 關鍵字的區(qū)別
1.volatile本質是在告訴jvm當前變量在寄存器(工作內存)中的值是不確定的,需要從主存中讀??;synchronized則是鎖定當前變量,只有當前線程可以訪問該變量,其他線程被阻塞住。
2.volatile僅能使用在變量級別;synchronized則可以使用在變量、方法、和類級別的
3.volatile僅能實現變量的修改可見性,不能保證原子性;而synchronized則可以保證變量的修改可見性和原子性
4.volatile不會造成線程的阻塞;synchronized可能會造成線程的阻塞。
5.volatile標記的變量不會被編譯器優(yōu)化;synchronized標記的變量可以被編譯器優(yōu)化
3、IntentFilter的匹配規(guī)則
1,IntentFilter中的過濾信息有action、category、data。
2,只有一個Intent同時匹配action類別、category類別、data類別才能成功啟動目標Activity。
3,一個Activity可以有多個intent-filter,一個Intent只要能匹配任何一組intent-filter即可成功啟動對應的Activity。