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/