線程同步與死鎖

一.多線程共享數據

在多線程的操作中,多個線程有可能同時處理同一個資源,這就是多線程的共享數據。



二.線程同步

解決數據共享的安全問題,必須使用同步,所謂同步就是指多個線程在同一個時間段內只能有

一個線程執行指定代碼,其他線程要等待此線程完成之後纔可以繼續執行。


線程進行同步,有下面兩種方法:

1).同步代碼塊。

synchronized(要同步的對象){

要同步的操作;

}


2).同步方法(同步的是當前對象,this)

public synchronized void method(){

要同步的操作;

}


注:同步代碼會帶來性能降低的問題,提高數據的安全性。



三.同步準則

1).使代碼塊保持簡短。把不隨線程變化的預處理和後處理移出synchronized快。

2).不要阻塞。如InputStream.read()。

3).在持有鎖的時候,不要對其他對象調用方法。

遵循這些準則可以避免死鎖和降低性能危險的風險。


四.線程死鎖

過多的同步有可能出現死鎖,死鎖的操作一般是在程序運行的時候纔有可能出現。


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