// 1. 每次 new Object() - 無鎖效果
synchronized (new Object()) { ... } // 每個線程鎖住不同對象,互不阻塞
// 2. 共享成員對象 - 真正同步
Object obj = new Object();
synchronized (obj) { ... } // 所有線程競爭同一把鎖,串行執行
synchronized 鎖住的是對象頭 Mark Word,必須是同一對象實例才能互斥。obj 為類成員/靜態變量,所有線程見到同一引用,實現互斥。private final Object lock = new Object();。ReentrantLock 顯式鎖,功能更豐富。