Java多線程編程-2

什麼是線程安全問題?

答:當多個線程訪問同一個全局變量,做寫的時候可能會受到其他線程的干擾。這種現象叫做線程安全問題,讀取的時候不會產生此類現象。

如何保證數據安全?

答:1.使用synchroized同步數據 //自動鎖

       2.使用lock同步數據,在jdk-1.5併發包中//手動鎖,需要手動解鎖

問:爲什麼使用線程同步或使用鎖能解決線程安全問題呢?

答:將可能會發生數據衝突問題(線程不安全問題),只能讓當前一個線程進行執行。代碼執行完成後釋放鎖,然後才能讓其他線程進行執行。這樣的話就可以解決線程不安全問題。

問:什麼是多線程之間同步?

答:當多個線程共享同一個資源,不會受到其他線程的干擾。

 

持有鎖的線程可以在同步中執行 

沒持有鎖的線程即使獲取CPU的執行權,也進不去 

同步的前提: 

1,必須要有兩個或者兩個以上的線程 

2,必須是多個線程使用同一個鎖 

必須保證同步中只能有一個線程在運行 

好處:解決了多線程的安全問題 

弊端:多個線程需要判斷鎖,較爲消耗資源、搶鎖的資源。

 

同步函數有哪些種?

非靜態同步函數(使用this),靜態同步函數(不是使用this,使用的是字節碼文件)

 

線程出現死鎖的原因:線程之間一直沒有釋放鎖導致所佔用,同步中嵌套同步會導致死鎖

 

java內存模型:主內存(jvm),本地私有內存(線程內存)

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章