品易云推流 关闭
文章 > java基础 > Java操作共享数据的五种情况

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

头像

小妮浅浅

2021-04-29 09:43:231196浏览 · 0收藏 · 0评论

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

1、不可变(Immutable)

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

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

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

对象的所有域都是final类型

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

2、绝对线程安全 

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

3、相对线程安全 

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

4、线程兼容 

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

5、线程对立 

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

以上就是Java操作共享数据的五种情况,希望能对大家有所帮助。更多Java学习指路:Java基础

关注公众号

关注公众号,随时随地在线学习

本教程部分素材来源于网络,版权问题联系站长!

底部广告图 底部广告图按钮