Java操作共享数据的五种情况

本教程操作环境:windows7系统、java10版,DELL G3电脑。

1、不可变(Immutable)

不可变的对象一定是线程安全的,无论是对象的方法实现还是方法的调用者,都不需要再进行任何线程安全保障措施。Java语言中,如果多线程共享的数据是一个基本数据类型,那么只要在定义时使用final关键字修饰它就可以保证它是不可变的。

当满足以下条件时,对象才是不可变的:

对象创建以后其状态就不能修改。 

对象的所有域都是final类型

对象是正确创建的(在对象的创建期间,this引用没有选出)

2、绝对线程安全 

不管运行时环境如何,调用者都不需要任何额外的同步措施

3、相对线程安全 

相对线程安全就是我们通常意义上所讲的线程安全,它需要保证对这个对象单次的操作是线程安全的,我们在调用的时候不需要进行额外的保障措施,但是对于一些特定顺序的连续调用,就可能需 要在调用端使用额外的同步手段来保证调用的正确性。

4、线程兼容 

线程兼容是指对象本身并不是线程安全的,但是可以通过在调用端正确地使用同步手段来保证对象在并发环境中可以安全地使用。

5、线程对立 

线程对立是指不管调用端是否采取了同步措施,都无法在多线程环境中并发使用代码。由于Java语言天生就支持多线程的特性,线程对立这种排斥多线程的代码是很少出现的,而且通常都是有害的,应当尽量避免。

java线程安全的方法有几种?:本教程操作环境:windows7系统、java10版,DELL G3电脑。1、互斥同步互斥同步是最常见、最重要的并发正确性保障手段,也称为堵塞同步。同步是指在多条线路并发访问共享数据时,保证共享数据在同一时间 ...