Java多線程編程具有以下優勢:
1、提高系統的吞吐率(Throughout). 多線程編程可以使一個進程有多個并發(concurrent,即同時進行的)的操作。
2、提高響應性(Responsiveness).Web服務器會采用一些專門的線程負責用戶的請求處理,縮短了用戶的等待時間。
3、充分利用多核(Multicore)處理器資源. 通過多線程可以充分的利用CPU資源。
1、線程安全(Thread safe)問題.多線程共享數據時,如果沒有采取正確的并發訪問控制措施,就可能會產生數據一致性問題,如讀取臟數據(過期的數據), 如丟失數據更新。
2、線程活性(thread liveness)問題.由于程序自身的缺陷或者由資源稀缺性導致線程一直處于非RUNNABLE狀態,這就是線程活性問題,常見的活性故障有以下幾種:
● 死鎖(Deadlock). 類似鷸蚌相爭
● 鎖死(Lockout), 類似于睡美人故事中王子掛了
● 活鎖(Livelock). 類似于小貓咬自己尾巴
● 饑餓(Starvation).類似于健壯的雛鳥總是從母鳥嘴中搶到食物
3、上下文切換(Context Switch). 處理器從執行一個線程切換到執行另外一個線程。
4、可靠性. 可能會由一個線程導致JVM意外終止,其他的線程也無法執行。