Chinaunix首页 | 论坛 | 博客
  • 博客访问: 17402
  • 博文数量: 21
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 211
  • 用 户 组: 普通用户
  • 注册时间: 2015-12-09 16:47
文章分类

全部博文(21)

文章存档

2017年(1)

2016年(9)

2015年(11)

我的朋友
最近访客

分类: Java

2016-07-25 15:18:40

Java按照线程安全的安全程度由强至弱来排序可以分为以下五类:不可变,绝对线程安全,相对线程安全。线程兼容和线程对立。不可变的对象一定是安全的,不可变的对象不需要通过其他锁机制来保证线程安全,如果是一个基本的数据类型只需要在变量前面增加final就可以使其变为不可变,如果是对象,那就需要对象的行为不会对其状态产生影响。比如String类型,他的substring ,replaceconcat函数都是返回了一个新的对象,而原对象是不会改变的。也可以通过把带有变量的状态设为final。比如Integer对象中的。

枚举类型,Double,Number,LongBigInteger,BigDecimal也是不可变类型。但是AtomicInteger(通过 修饰) AtomicLongVolatile)绝对线程安全,这种类在java中是很少见的,即使所有的方法都加入了Synchronized修饰。但是也不能保证他是绝对的线程安全。相对线程安全就是我们通常所说的线程安全,它需要保证对这个对象单独的操作是线程安全的。

 

阅读(739) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~