`
570421779
  • 浏览: 46427 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

JAVA线程安全_StringBuffer&&StringBuilder

阅读更多
1. 什么是线程安全
如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。如果每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的。
2. ArrayList和Vector的区别
从1中的概念来讲Vector应该是线程安全的,能够修改它结构的方法都加入了synchronized关键字,保证了在同一时间只有一个进程能对Vector进行结构修改.但是在实际开发过程中使用的开发代码大多是:
If(!vector.contain(E)){
…….
Vector.add(E);
}
这样就不能保证线程安全,比如说线程1进入if语句准备add E1,这时线程2抢占系统资源也进入if语句,准备add E2,最后结果是添加了E2,这就导致了虽然Vector是线程安全的,但是实际上还是不安全的.同理的还有stringbuffer和stringbuilder.
因此在:
单线程下:Vector,StringBuffer的线程安全特性是额外的消耗
多线程下:Vector,StringBuffer的线程安全特性在绝大多数情况下不起作用。

因此催生了ArrayList 和StringBuider的出现,并将并发控制交给程序员。
分享到:
评论
2 楼 570421779 2012-04-25  
呵呵,没有遇到过
1 楼 niuqiang2008 2012-04-18  
请问一个action  (struct)应该是多线程的吧  ,您碰到string 字符串拼接造成的线程不安全问题吗 , 能举例吗?

相关推荐

    Java StringBuffer & StringBuilder.pdf

    2. **性能**:由于线程安全机制的存在,`StringBuffer` 在多线程环境下的性能通常低于 `StringBuilder`。在单线程环境下,由于不需要进行额外的同步开销,`StringBuilder` 的性能优于 `StringBuffer`。 **二、...

    StringBuffer & StringBuilder 源码分析.docx

    StringBuffer 和 StringBuilder 是 Java 语言中两个常用的字符串操作类,它们都是 CharSequence 接口的实现类,并且都继承了 AbstractStringBuilder 类。下面是对这两个类的源码分析。 首先,StringBuffer 是线程...

    String&StringBuffer&StringBuilder三者之间的区别-经典解析.doc

    但是,StringBuilder没有实现线程安全,这意味着它不包含同步方法,因此在单线程环境中,StringBuilder通常比StringBuffer更快,因为它不需要线程同步的额外开销。 - **线程不安全**:在多线程环境下,使用...

    String StringBuffer和StringBuilder区别之源码解析

    StringBuffer类是线程安全的,而StringBuilder类不是线程安全的。 在选择字符串类时,我们需要考虑到线程安全性和执行效率。如果需要线程安全性,可以选择StringBuffer类;如果需要高执行效率,可以选择...

    day13_StringBuffer_java_

    在多线程环境下,`StringBuffer`相比`StringBuilder`(自Java 5引入)具有一个显著优势:`StringBuffer`的所有方法都是同步的。这意味着多个线程可以安全地同时操作同一个`StringBuffer`实例,而无需额外的同步措施...

    JAVA_StringBuffer

    在Java编程语言中,`StringBuffer`类是一个非常重要的工具,尤其在处理字符串操作时,尤其是在多线程环境中。这个类被设计用来高效地构建和修改字符串内容,它提供了线程安全的方法,使得多个线程可以同时对字符串...

    api_StringBuffer.zip_fullvgv_java_tasteazi

    这个类位于`java.lang`包中,是线程安全的字符串操作类,与`StringBuilder`类一起提供了对字符串的动态构建。在多线程环境中,`StringBuffer`比直接使用`+`操作符或`StringBuilder`更推荐,因为它的所有方法都是同步...

    String、StringBuilder和StringBuffer的区别

    在Java编程语言中,String、StringBuilder和StringBuffer都是用来处理字符串的类,它们之间存在一些重要的区别,主要涉及到性能和线程安全性。 首先,`String`类代表的是字符串常量,一旦创建,其内容就不能改变。...

    w3school_Java&JSP;教程

    这两个类用于处理字符串,但 StringBuffer 是线程安全的,而 StringBuilder 不是。在单线程环境中,StringBuilder 更高效。 **Java数组** 数组是一种存储相同类型元素的数据结构。Java 中的数组可以在创建时初始化...

    Java中StringBuffer和StringBuilder_动力节点Java学院整理

    `StringBuilder`是在Java 5中引入的,它是`StringBuffer`的一个轻量级替代品,不提供线程安全性。在单线程程序中,由于没有同步开销,`StringBuilder`的操作通常更快。对于大多数应用来说,如果不需要考虑多线程环境...

    Java-String&StringBuilder&StringBuffer的区别与分析

    StringBuilder在单线程环境下使用,而StringBuffer是在多线程环境中使用,因为StringBuffer提供了同步方法,保证了线程安全。 关于线程安全性,String由于其不可变性自然具备线程安全性,不同线程读取同一个String...

    Java中String,StringBuffer与StringBuilder的区别

    但是,StringBuilder 类型是非线程安全的,意味着它不适合在多线程环境下使用。与 StringBuffer 类型不同的是,StringBuilder 类型的性能更好,特别是在单线程环境下使用。 在实际应用中,我们应该根据实际情况选择...

    从源码角度简单看StringBuilder和StringBuffer的异同(全面解析)

    StringBuffer是StringBuilder的线程安全版本,它提供了与StringBuilder相同的API,但是它是线程安全的。这意味着StringBuffer可以在多线程环境中使用,但是它的效率比StringBuilder要低。 StringBuilder和...

    String及StringBuffer和StringBuilder的区别

    String、StringBuffer 和 StringBuilder 是 Java 语言中三种不同类型的字符串处理方式,它们之间存在着明显的性能和线程安全性差异。 String String 类型是不可变的对象,每次对 String 对象进行改变时都会生成一...

    String、StringBuffer、StringBuilder的使用方法

    `StringBuilder`是`StringBuffer`的非线程安全版本,它在单线程环境下性能更优。其功能与`StringBuffer`相同,但在多线程环境下的安全性不足。例如: ```java StringBuilder sb = new StringBuilder("Hello"); sb....

    java基础--4.常用类-3.StringBuffer、StringBuilder

    在Java编程语言中,`StringBuffer`和`...总之,理解和熟练运用`StringBuffer`和`StringBuilder`对于编写高效且线程安全的Java代码至关重要。根据具体的应用场景选择合适的类,可以显著提升程序的性能和可维护性。

    String ,StringBuffer与StringBuilder

    String, StringBuffer 与 StringBuilder 的区别 ...String 是不可变类,StringBuffer 是可变类,而 StringBuilder 是线程不安全的可变类。根据不同的使用场景,我们可以选择合适的类来实现字符操作。

    String-StringBuffer-StringBuilder

    在Java编程语言中,`String`、`StringBuffer`和`StringBuilder`都是用来处理字符串的类,但它们之间存在显著的差异,主要体现在性能、线程安全性和使用场景上。 首先,`String`是最基本的字符串类,它代表的是不可...

Global site tag (gtag.js) - Google Analytics