public class AtomicStringBuilder { private AtomicReference<Thread> sign =new AtomicReference<Thread>(); StringBuilder sb = new StringBuilder(); public void lock(){ Thread current = Thread.currentThread(); while(!sign .compareAndSet(null, current)){ } } public void unlock (){ Thread current = Thread.currentThread(); sign.compareAndSet(current, null); } public void append(String str){ lock(); sb.append(str); unlock(); } public void setLength(int i){ lock(); sb.setLength(i); unlock(); } public String toString(){ String str = null; lock(); str= sb.toString(); unlock(); return str; } }
引用:http://ifeve.com/java_lock_see1/