不使用鎖完成單例(CAS)

class Person{
	private static final AtomicReference<Person> INSTANCE = new AtomicReference<>();
	
	public static Person getInstance() {
		while(true) {
			Person p = INSTANCE.get();
			if(p != null) {
				return p;
			}
			p = new Person();
			//預期舊值	新值
			if(INSTANCE.compareAndSet(null, p)) {
				return p;
			}
		}
	}
}

 

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