武汉java培训
达内武汉中心

15827352908

热门课程

Java中的线程安全

  • 时间:2018-11-07 17:02
  • 发布:武汉java培训
  • 来源:互联网

又是一个理论的问题,各式各样的答案有很多,给出一个解释最好的:如果你的代码在多线程下执行和在单线程下执行永远都能获得一样的结果,那么你的代码就是线程安全的。

武汉java培训

这个问题有值得一提的地方,就是线程安全也是有几个级别的:

(1)不可变

像String、Integer、Long这些,都是final类型的类,任何一个线程都改变不了它们的值,要改变除非新创建一个,因此这些不可变对象不需要任何同步手段就可以直接在多线程环境下使用

(2)绝对线程安全

不管运行时环境如何,调用者都不需要额外的同步措施。要做到这一点通常需要付出许多额外的代价,Java中标注自己是线程安全的类,实际上绝大多数都不是线程安全的,不过绝对线程安全的类,Java中也有,比方说CopyOnWriteArrayList、CopyOnWriteArraySet

(3)相对线程安全

相对线程安全也就是我们通常意义上所说的线程安全,像Vector这种,add、remove方法都是原子操作,不会被打断,但也仅限于此,如果有个线程在遍历某个Vector、有个线程同时在add这个Vector,99%的情况下都会出现ConcurrentModificationException,也就是fail-fast机制。

(4)线程非安全

这个就没什么好说的了,ArrayList、LinkedList、HashMap等都是线程非安全的类

本篇文章是由武汉java培训为您呈现,希望给您带来更多更好的文章!

马上预约七天免费试听课

姓名:

电话:

上一篇:武汉java培训:介绍volatile关键字
下一篇:Java中出现异常如何处理?

武汉java培训:什么是AQS

有关线程安全的问题之一

武汉java培训:内存模型介绍

武汉java培训:写一个会导致死锁的程序

选择城市和中心
贵州省

广西省

海南省

有位老师想和您聊一聊