其實synchronized也不支持基本類型的封裝類,如Long、Integer等都不支持併發
synchronized不支持基本類型的封裝類,所以Long轉型爲Stringide
有極小的可能出現多個管理層同時修改一我的,致使併發問題,所以把每一個被修改人id當作一把鎖,不影響大批量修改不一樣的人,
此處用intern()方法,是由於String類重寫了equals和hashcode方法,因此正常狀況使用equals方法沒有問題
若是使用System.identityHashCode(keyId),能夠發現真正的hashcode倒是不一樣,因此在根本上來講並非同一個對象。
intern()方法做用:若是常量池中存在當前字符串, 就會直接返回當前字符串. 若是常量池中沒有此字符串, 會將此字符串放入常量池中後, 再返回」。
因此每次返回同一個對象,前提是值相等。函數
同步函數效率低於this是由於即便得到了鎖進入方法還須要消耗時間,this鎖在得到鎖的時候已經進入了方法中,this鎖效率又低於自定義對象鎖,因此對象越小越好,因此用byte,造一個字節的byte對象最小,通常工做中用這種方法。this
private byte[ ] lock=new byte[1];code