public String toString(){
      StringBuffer buffer = new StringBuffer();
      buffer.append('<');
      buffer.append(this.name);
      buffer.append('>');
      return buffer.toString();
   }这段代码线程安全吗??

解决方案 »

  1.   

    是的!你在方法内部定义的变量,在每个线程线程进入的时候都会创建这个局部变量!不涉及设线程安全问题!
    stringBuffer本身的内部实现是现场安全的!
      

  2.   

    StringBuffer是线程安全的!你可以自己跟进源码里头去看看
    这是源码的片段代码:
    public synchronized int length() {
    return count;
        }    public synchronized int capacity() {
    return value.length;
        }
        public synchronized void ensureCapacity(int minimumCapacity) {
    if (minimumCapacity > value.length) {
        expandCapacity(minimumCapacity);
    }
        }    /**
         * @since      1.5
         */
        public synchronized void trimToSize() {
            super.trimToSize();
        }
    StringBuffer里头有很多synchronized 方法LZ建议以后这种问题,看看源码,对学习有好处
      

  3.   

    Stringbuffer是线程安全的,但StringBuilder不是线程安全的
      

  4.   

     public synchronized StringBuffer append(Object obj) {
    super.append(String.valueOf(obj));
            return this;
        }
      

  5.   

    单个append当然线程安全。
    但是多个append线程就不安全了。
    请参考:
    http://hi.baidu.com/gabe2008/blog/item/c1d7e62a28da21f4e7cd40d8.html
      

  6.   

    StringBuffer是线程安全的,StringBuild是线程不安全的