Java多线程-提纲

2019-11-19  本文已影响0人  xgangzai

多线程系列总结

一、线程、多线程出现的背景

解决CPU、内存和IO三者间的速度差异,CPU利用率最大化。

二、多线程带来的问题

可见性

因为CPU缓存,一个线程对某个变量的修改,另一个线程不能立即看到

原子性

因为线程调度,一个线程还未执行完语言级的语句,就被让出CPU时间片,另一个线程在旧的数据上继续操作,等先前线程重新被调度执行后,继续那个线程的更新覆盖掉。

有序性

编译器优化CPU指令,在单线程中完全没问题,但是在多线程中,可能会导致其他线程读到中间态数据

三、怎么解决多线程带来的三个问题

1.解决可见性问题

volatile 6项Happens-Before规则

2.解决原子性问题

使用管程

3.解决有序性

还是volatile?防止指令重排

四、并发编程最佳实践-9个并发编程设计模式

上一篇 下一篇

猜你喜欢

热点阅读