A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 杨兴庭 于 2013-7-9 21:12 编辑

例如:StringBuffer类是线程同步的;而StringBuilder是线程不同步的,这两者在具体应用时候的区别在哪里?最好用实例说明,O(∩_∩)O谢谢

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

8 个回复

倒序浏览
线程同步更安全,但是效率会降低,因为每次都要判断
线程不同步,多线程的时候就会有安全问题,但是效率高,所以单线程时用StringBuilder
至于到底什么样的安全问题,请看毕老师视频第11天-09-多线程(多线程的安全问题)

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

回复 使用道具 举报
单线程时候用StringBuilder效率高。
多线程时候用StringBuffer,因为StringBuilder没有同步,可能会出现2个引用同时访问一个对象的情况出现。
回复 使用道具 举报
StringBuffer类线程安全的可变字符序列。类似于String 的字符串缓冲区,但不能修改。可将字符串缓冲区安全地用于多个线程。可以在必要时对这些方法进行同步,因此任意特定实例上的所有操作就好像是以串行顺序发生的,该顺序与所涉及的每个线程进行的方法调用顺序一致。
每个字符串缓冲区都有一定的容量。只要字符串缓冲区所包含的字符序列的长度没有超出此容量,就无需分配新的内部缓冲区数组。如果内部缓冲区溢出,则此容量自动增大。从JDK 5.0 开始,为该类增添了一个单个线程使用的等价类,即StringBuilder 。与该类相比,通常应该优先使用StringBuilder 类,因为它支持所有相同的操作,但由于它不执行同步,所以速度更快。但是如果将StringBuilder 的实例用于多个线程是不安全的。需要这样的同步,则建议使用StringBuffer 。

   


   



评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

回复 使用道具 举报
谢谢各位……
回复 使用道具 举报
denghui1010 发表于 2013-7-9 19:18
线程同步更安全,但是效率会降低,因为每次都要判断
线程不同步,多线程的时候就会有安全问题,但是效率高 ...

技术分够了哦。。祝愿顺利入学:handshake
回复 使用道具 举报
杨兴庭 发表于 2013-7-9 21:12
技术分够了哦。。祝愿顺利入学

感谢天,感谢地啊:kiss:
回复 使用道具 举报
denghui1010 发表于 2013-7-9 21:22
感谢天,感谢地啊

还有感谢版主哦。。。呵呵:)
回复 使用道具 举报
杨兴庭 发表于 2013-7-9 21:24
还有感谢版主哦。。。呵呵

那必须的,所以给了你一个大大的红唇....虽然我是男的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马