1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 多线程并发或线程安全问题如何解决?

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

时间:2020-03-01 04:38:21

相关推荐

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

1:通过volatile 关键字修饰变量,可以实现线程之间的可见性,

避免变量脏读的出现,底层是通过限制jvm指令的重排序来实现的

适用于一个线程修改,多个线程读的场景

2:通过synchronized锁(任意对象)来实现线程同步,自动锁的思想,

底层实现原理:当有线程进入同步代码块之后,利用jvm的计数器将

锁的标记置为1,当别的线程再想进入的时候,发现锁的标记为1,

该线程就去锁池等待,当第一个线程出来之后,锁的标记会置为0,

之后cpu会随机分配一个线程再次进入同步代码块.

3:通过lock锁的机制,进行手动lock,和unlock,但是这种很容易出现死锁。

注意加锁以及解锁的顺序,就可以避免死锁

4:通过线程安全的集合类,可以解决并发问题4

ConcurrentHashMap

CopyonWriteArrayList

5:使用并发包下面的原子类,底层使用的是cas机制(乐观锁),可以解决并发问题 atomicInteger 线程安全的原子整型类

6:使用线程池来创建和管理线程,也可以一定程度上解决并发问题

7:使用ThreadLocal来修饰变量,可以解决并发问题

ThreadLocal底层是怎么实现的?

多个线程会复制一份threadLocao变量的副本进行操作,互不影响,来保证线程安全的

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。