问答详情
源自:2-5 认识 Java 中的 StringBuilder 类

什么是线程安全?为什么会性能高?

如题。

提问者:chessqian 2014-11-27 16:20

个回答

  • hasty
    2014-11-27 16:45:28

    1: 线程安全是指:多个线程同时操作数据对象(变量)时,结果和单个线程一样。例如:

    String a = "aaa";

    同时开两个线程操作a:

    线程1:
    b = a.append("bb");

    线程2:
    c = a.append("cc");
    线程安全的结果是:b = aaabb   c=aaabbcc;
    非线程安全的结果是: b= aaabb   c=aaacc;        


    2: 线程安全一般是以加锁为代价换取的,即:当一个线程操作时把对象锁住、等它操作完毕后再让其它线程操作(实际中有一些更好的实现,但大体原理如此)。而非线程安全就不需要考虑这种情况,所以性能会高一些。