String Stringbuffer Stringbuilder

转载 2015年11月18日 17:24:07
                           String(大姐,出生于JDK1.0时代)          不可变字符序列
                           StringBuffer(二姐,出生于JDK1.0时代)    线程安全的可变字符序列

                           StringBuilder(小妹,出生于JDK1.5时代)   非线程安全的可变字符序列 



StringBuffer和StringBuilder可以算是双胞胎了,这两者的方法没有很大区别。但在线程安全性方面,StringBuffer允许多线程进行字符操作。这是因为在源代码中StringBuffer的很多方法都被关键字synchronized 修饰了,而StringBuilder没有。


有多线程编程经验的程序员应该知道synchronized。这个关键字是为线程同步机制 设定的。我简要阐述一下synchronized的含义:
      每一个类对象都对应一把锁,当某个线程A调用类对象O中的synchronized方法M时,必须获得对象O的锁才能够执行M方法,否则线程A阻塞。一旦线程A开始执行M方法,将独占对象O的锁。使得其它需要调用O对象的M方法的线程阻塞。只有线程A执行完毕,释放锁后。那些阻塞线程才有机会重新调用M方法。这就是解决线程同步问题的锁机制。 
      

 了解了synchronized的含义以后,大家可能都会有这个感觉。多线程编程中StringBuffer比StringBuilder要安全多了 ,事实确实如此。如果有多个线程需要对同一个字符串缓冲区进行操作的时候,StringBuffer应该是不二选择。
      注意:是不是String也不安全呢?事实上不存在这个问题,String是不可变的。线程对于堆中指定的一个String对象只能读取,无法修改。试问:还有什么不安全的呢? 



 本文引用 http://blog.csdn.net/clam_clam/article/details/6831345  想了解更多请点击

String ,StringBuffer与StringBuilder

  • 2013年10月14日 22:32
  • 31KB
  • 下载

拼接字符串的效率问题(String,StringBuffer,StringBuilder对比)

拼接字符串,大致有3个class可以用,他们是String, StringBuffer ,StringBuilder。 其中 StringBuilder是1.5中来代替StringBuffer的。检...

Java中String、StringBuffer、StringBuilder的区别及面试经常出现的问题

1、String 、StringBuffer、StringBuilder的执行效率       StringBuilder > StringBuffer > String   当然这...

黑马程序员——java第十三天:String类、StringBuffer、StringBuilder、基本数据类型对象包装类、进制转换

------- android培训、java培训、期待与您交流! ---------- String概述 String类在java.Lang包中。String类不可以有子类。 String ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:String Stringbuffer Stringbuilder
举报原因:
原因补充:

(最多只允许输入30个字)