一马平川
不积跬步无以至千里,后继才能薄发

Java的线程安全和锁优化

2020年07月21日
0
未分类

Java的线程安全和锁优化

线程安全

在Java中或者说在Jvm实现中,线程安全是一个相对的概念,某个对象在单独使用某个操作时是线程安全的,但在某些操作顺序却不是线程安全,需要额外的同步。该节将介绍线程安全的概念和在Java中的实现。

Java语言中的线程安全

不可变

final类型的基本类型,在初始化时,如果没有发生this引用逃逸正确地初始化,在以后的使用中值不会变更,是线程安全的;对象行为不会对自身状态变更的对象,所有的行为都不会对自身进行变更,如java.lang.String类,subString()、trim()等方法都是返回一个目标值而对自身的变量不进行变更,也是线程安全的。

绝对线程安全

不需要做任何额外的同步,在多线程环境中都能得到正确的结果的变量,实际上这种要求很严苛,因为就算是“线程安全”的类,在某些操作顺序中也会导致不正确的结果,而需要额外的同步块进行同步控制。

相对线程安全

对象的单独调用时,是线程安全的,但是在一些特定的调用顺序中,需要额外的同步保证线程安全,如HashTable类

线程兼容

对象本身不是线程安全的,但是通过同步手段保证对象在并发中安全使用

线程对立

无论是否使用了同步手段,都无法保证线程安全的代码

如果喜欢这篇文章,可以给作者评个份哦~

原文声明: "转载本站文章请注明作者和出处Nothinglin ,请勿用于任何商业用途"

公众号:苦逼的学生仔