当前位置:首页 > 编程笔记 > 正文
已解决

多线程并发或线程安全问题如何解决

来自网友在路上 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 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!