线程安全与不安全问题
1: 线程安全是指:多个线程同时操作数据对象(变量)时,结果和单个线程一样。例如:
String a = "aaa";
同时开两个线程操作a:
线程1:
b = a.append("bb");
线程2:
c = a.append("cc");
线程安全的结果是:b = aaabb c=aaabbcc;
非线程安全的结果是: b= aaabb c=aaacc;
也可能是b = aaabb c=aaabbcc;
2: 线程安全一般是以加锁为代价换取的,即:当一个线程操作时把对象锁住、等它操作完毕后再让其它线程操作(实际中有一些更好的实现,但大体原理如此)。而非线程安全就不需要考虑这种情况,所以性能会高一些。