String,StringBuffer,StringBuider区别和使用场景?
StringBuilder与StringBuffer有公共父类AbstractStringBuilder(抽象类)。
StringBuffer对方法加了同步锁或者对调用的方法加了同步锁,所以是线程安全的。
StringBuilder并没有对方法进行加同步锁,所以是非线程安全的。
(使用场景)
当单线程操作大量数据时,建议使用StringBuilder,速度更快(10%~15%左右的性能提升),毕竟同步有性能开销。
多线程操作大量数据时,建议使用StringBuffer。可用于全局变量中。
相同情况下StirngBuilder虽然比StringBuffer获得10%~15%左右的性能提升,但却要冒多线程不安全的风险。而在现实的模块化编程中,负责某一模块的程序员不一定能清晰地判断该模块是否会放入多线程的环境中运行,因此除非确定系统的瓶颈是在StringBuffer上,并且确定你的模块不会运行在多线程模式下,才可以采用StringBuilder,否则还是用StringBuffer。