首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

StringBuffer是线程安全吗?小弟我有例子说它不是安全的

2012-01-16 
StringBuffer是线程安全吗?我有例子说它不是安全的。Java codepublic class StringBufferTest {private Str

StringBuffer是线程安全吗?我有例子说它不是安全的。

Java code
public class StringBufferTest {   private StringBuffer contents = new StringBuffer();   public  void  log(String message){      contents.append(System.currentTimeMillis());      contents.append("; ");      contents.append(Thread.currentThread().getName());      for(int i=0;i<10000;i++){         contents.append(i);          contents.append(message);          contents.append("\n");      }      contents.append("\n\n\n");   }   public  void getContents(){      System.out.println(contents);   }}class RunThread extends Thread{   String message;   StringBufferTest buffer;   public RunThread(StringBufferTest buffer, String message){      this.buffer = buffer;      this.message = message;   }   public void run(){      while(true){         buffer.log(message);         buffer.getContents();      }   }   public static void main(String[] args) {      StringBufferTest ss = new StringBufferTest();      new RunThread(ss, "love").start();      new RunThread(ss, "make").start();      new RunThread(ss, "you").start();   }}


[解决办法]
不是线程安全的。
因为StringBuffer中的方法可以修改本身。
[解决办法]
我的沙发。
[解决办法]

[解决办法]
StringBuffer是线程安全的,里面的方法用了synchronized修饰,也就是单线程的
我按lz的例子跑了一下,结果还是证明了。
我不知道lz是如何操作的,显示的结果如何?
[解决办法]
StringBuffer是线程安全的啊,
我这里也显示正常啊,不知道lz是怎么操作的,
StringBuilder才不是线程安全的,
[解决办法]
探讨
不是线程安全的。
因为StringBuffer中的方法可以修改本身。

[解决办法]
StringBuilder才不是线程安全的

StringBuilder和StringBuffer的方法是一模一样,就是一个多线程和一个单线程的问题
[解决办法]
我都不知道你是怎么认为StringBuffer不是线程安全的
 
[解决办法]
楼主的例子不用跑,结果就很明显,只是你的例子不能证明StringBuffer是线程不安全的啊。
你的例子核心就是多线程调用同一StringBuffer 的append方法,这跟他是不是线程安全不搭尬呀,除非你的结果是append的一系列字符串变乱了,那才能说明他是线程不安全的。 不明白可以再问。
[解决办法]
探讨
不是线程安全的。
因为StringBuffer中的方法可以修改本身。

[解决办法]
这个例子 应该有可能出现最后getContents()方法 出来的数据显示是乱的吧

多个线程拿到同一个对象StirngBuffer , 同时调用同一个方法 , A线程执行appand()以后 接着 B线程执行
appand() 最后数据就是乱的了 这个情况还是有的吧

线程安全 并不是说他的一系列操作是同步的 只是对于他执行某个方法的时候不允许别的线程去改变

大家给意见 是不是这样
[解决办法]
探讨
引用:
不是线程安全的。
因为StringBuffer中的方法可以修改本身。

线程安全是指任何时刻都只有一个线程访问临界资源

[解决办法]
探讨

楼主的例子不用跑,结果就很明显,只是你的例子不能证明StringBuffer是线程不安全的啊。
你的例子核心就是多线程调用同一StringBuffer 的append方法,这跟他是不是线程安全不搭尬呀,除非你的结果是append的一系列字符串变乱了,那才能说明他是线程不安全的。 不明白可以再问。

热点排行