tzkr.net
当前位置:首页 >> stringBuFFEr线程安全吗 >>

stringBuFFEr线程安全吗

StringBuffer的很多方法用synchronized修饰,意味着多个线程只能互斥地调用这个方法.例如StringBuffer的append方法,对于多线程编程,多个线程不能同时使用这个方法.StringBuilder的方法没有这个限制.如果用于多线程程序,可能会造成错误.一个方法包含若干语句,编译成二进制代码就更多了.线程随时可能被中断,比如时间片中断、按键中断、网卡有数据到达引发中断等.线程A在执行append,还没完成就中断了.线程B运行,也执行这个串对象的append.随后A继续append未完的部分.会造成错误.如果你学过OS就会知道这点.

这就要说说String了.String是一次性的,一旦初始化后就不能改变String对象的值.除非指向另一个String对象.所以不存在线程安全问题.而StringBuffer对象可以在创建之后不断的改变.为了保证当前线程操作的StringBuffer不受其它线程影响,所以就

是的,StringBuffer线程安全但如果程序不要求线程安全,一般使用StringBuilder.StringBuilder线程不安全,但效率更高欢迎追问,满意请采纳

多个线程操作同一个StringBuffer对象会顺序进行(内部很多方法是同步方法)多个线程操作同一个StringBuilder是同时的,这时候可能出现与预期不符合的结果StringBuilder由于是线程不安全的,所以性能更好.大部分情况下都是单线程操作字符串,这时候选择StringBuilder.

1. String 类 String的值是不可变的,这就导致每次对String的操作都会生成新的String对象,不仅效率低下,而且大量浪费有限的内存空间. String a = "a"; //假设a指向地址0x0001 a = "b";//重新赋值后a指向地址0x0002,但0x0001地址

ArrayList不是线程安全的 你看API如果他们的方法定义里面有synchronized证明是线程安全的StringBuffer是线程安全的

线程安全是在多线程环境下说的所谓的线程安全就是有加同步锁的同步锁能控制只有一个线程进入代码执行

StringBufferd支持并发操作,线性安全的,适 合多线程中使用

string是不可变类,所以是线程安全的 所有不可变类都是线程安全的,线程安全的类不一定是不可变类,如stringbuffer是可变类,靠锁实现线程安全

在大部分情况下 StringBuilder > StringBufferjava.lang.StringBuilder一个可变的字符序列是5.0新增的.此类提供一个与 StringBuffer 兼容的 API,但不保证同步.该类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍).如果可能,建议优先采用该类,因为在大多数实现中,它比 StringBuffer 要快.两者的方法基本相同.

网站首页 | 网站地图
All rights reserved Powered by www.tzkr.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com