已解决
多线程并发或线程安全问题如何解决
来自网友在路上 149849提问 提问时间:2023-09-22 11:47:55阅读次数: 49
最佳答案 问答题库498位专家为你答疑解惑
1、通过volatile关键字修饰变量,可以实现线程之间的可见性,避免变量脏读的出现,底层是通过限制jvm指令的重新排序实现的,适用于一个线程修改,多个线程读的场景。
2、通过synchronized锁(任意对象)来实现线程同步,自动锁的思想,底层实现原理:当又线程进入同步代码快之后,利用jvm的计数器将锁的标记位置为1,当别的线程再想进入的时候,发现锁的标记为1,该线程就去锁池等待,当第一个线程出来之后,锁的标记会置为0,之后cpu会随机分配一个线程再次进入同步代码块
3、通过Lock锁的机制,进行手动lock和unlock,但是这种很容易出现死锁。注意加锁一级解锁的顺序,就可以避免死锁。
4、通过使用线程安全的集合类,就可以解决并发问题,如:
ConcurrentHashMap、CopyonWriteArrayList等。
5、使用并发包下面的原子类,底层使用CAS机制(乐观锁),可以解决并发问题,如atomiclnteger线程安全的原子类。
6、使用线程池来创建和管理线程,也可以一定程度上解决并发问题
7、使用ThreadLocal来修饰变量,可以解决并发问题
查看全文
99%的人还看了
相似问题
猜你感兴趣
版权申明
本文"多线程并发或线程安全问题如何解决":http://eshow365.cn/6-11394-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!
- 上一篇: Vue3大屏项目实现数字跳动的效果
- 下一篇: 编译原生安卓aosp源码,实现硬改以及定位