什么是线程安全?

先说一下,我为什么要写这篇文章!因为有位网友给我发了一篇关于AtomicInteger的文章:https://blog.csdn.net/fanrenxiang/article/details/80623884,说看不懂。我看了这篇文章,我说看不懂就对了,这篇文章的测试代码写的有问题。不用看了,虽然我知道他想表达的意思。这篇文章的阅读量也很高,所以我这里简单解释一下什么是线程安全!

如果说面试官让你谈谈线程安全?你只需要说到下面3点即可,其他的都不要扯!

线程安全性主要体现在三个方面:原子性、可见性、有序性!

  • 原子性:提供了互斥访问,同一时刻只能有一个线程来对它进行操作
  • 可见性:一个线程对主内存的修改可以及时的被其他线程观察到
  • 有序性:一个线程观察其他线程中的指令执行顺序,由于指令重排序的存在,该观察结果一般杂乱无序。

线程安全

说到线程安全,你只需要说到 java 中提供了两种保证线程安全的操作。一种是 JDK 中已经提供好的 Atomic 包,他们均使用了 CAS 完成线程的原子性操作,另一个是使用锁的机制来处理线程之间的原子性。锁包括:synchronized、Lock等。

你只需要把这些知识点学会了,工资绝对不会低!

具体可以参考我前面说的 juc。

java 线程安全关于 juc 下面的内容,我后面会一篇一篇的来写!大家也可以通过我的微信公众号,回复“jUC”关键字即可获得一套完整的JUC包内各类使用的视频教程!

最后我总结一下synchronized、Lock、Atomic 三者各自的特点。

  • synchronized:不可中断锁,适合竞争不激烈,可读性好   (其实我觉得现在 jdk1.8 中的效率可以了,可以直接用)
  • Lock:可中断锁,多样化同步,竞争激烈时能维持常态
  • Atomic:竞争激烈时能维持常态,比Lock性能好,每次只能同步一个值

什么是线程安全?

: » 什么是线程安全?

原创文章,作者:sunnyman218,如若转载,请注明出处:https://blog.ytso.com/251905.html

(0)
上一篇 2022年5月3日
下一篇 2022年5月3日

相关推荐

发表回复

登录后才能评论