一.多線程共享數據
在多線程的操作中,多個線程有可能同時處理同一個資源,這就是多線程的共享數據。
二.線程同步
解決數據共享的安全問題,必須使用同步,所謂同步就是指多個線程在同一個時間段內只能有
一個線程執行指定代碼,其他線程要等待此線程完成之後纔可以繼續執行。
線程進行同步,有下面兩種方法:
1).同步代碼塊。
synchronized(要同步的對象){
要同步的操作;
}
2).同步方法(同步的是當前對象,this)
public synchronized void method(){
要同步的操作;
}
注:同步代碼會帶來性能降低的問題,提高數據的安全性。
三.同步準則
1).使代碼塊保持簡短。把不隨線程變化的預處理和後處理移出synchronized快。
2).不要阻塞。如InputStream.read()。
3).在持有鎖的時候,不要對其他對象調用方法。
遵循這些準則可以避免死鎖和降低性能危險的風險。
四.線程死鎖
過多的同步有可能出現死鎖,死鎖的操作一般是在程序運行的時候纔有可能出現。