多线程(7)多线程带来的性能问题
多线程应用不当会造成性能变慢,不是越多越好
1.上下文切换
需要保存现场,包括指令执行到哪一步了,寄存器计数器等
2.缓存开销
之前的缓存失效了,需要新的缓存
所以CPU规定了线程执行的最小时间,防止频繁的线程切换
3.何时会频繁的上下文切换
竞争锁,IO操作带来频繁阻塞,死锁
4.内存同步带来主存CPU开销
使用synchronize和volatile禁止编译器优化,使各线程不能在使用内缓存,而使用主存
多线程应用不当会造成性能变慢,不是越多越好
1.上下文切换
需要保存现场,包括指令执行到哪一步了,寄存器计数器等
2.缓存开销
之前的缓存失效了,需要新的缓存
所以CPU规定了线程执行的最小时间,防止频繁的线程切换
3.何时会频繁的上下文切换
竞争锁,IO操作带来频繁阻塞,死锁
4.内存同步带来主存CPU开销
使用synchronize和volatile禁止编译器优化,使各线程不能在使用内缓存,而使用主存