由於同一進程內的多個線程共享內存空間
最簡單的同步是將一個方法標記為synchronized
但是
此外
多線程同步的實現最終依賴鎖機制
Java語言規范內置了對多線程的支持
public class SharedResource {
private int count =
public int getCount() { return count; }
public synchronized void setCount(int count) { unt = count; }
}
同步方法public synchronized void setCount(int count) { unt = count; } 事實上相當於
public void setCount(int count) {
synchronized(this) { // 在此獲得this鎖
unt = count;
} // 在此釋放this鎖
}
紅色部分表示需要同步的代碼段
退出synchronized塊時
為了提高性能
public class SharedResouce {
private int a =
private int b =
public synchronized void setA(int a) { this
public synchronized void setB(int b) { this
}
若同步整個方法
public class SharedResouce {
private int a =
private int b =
private Object sync_a = new Object()
private Object sync_b = new Object()
public void setA(int a) {
synchronized(sync_a) {
this
}
}
public synchronized void setB(int b) {
synchronized(sync_b) {
this
}
}
From:http://tw.wingwit.com/Article/program/Java/gj/201311/27512.html