Java并发编程的艺术-并发编程的挑战

2019-02-24  本文已影响0人  油多坏不了菜

上下文切换

假设单核系统, 而有多个线程,那么这些线程需要按时间片分配cpu资源。一个线程占用的cpu时间片到期后释放cpu,然后另外一个线程获得cpu资源,这个过程就叫做上下文切换。显然,线程切换涉及到信息的保存与恢复,是会影响多线程执行效率的。

减少上下文切换思路

  1. 用jstack dump线程信息,可以看到里面每个线程在做
    什么
    jstack pid > /home/pepper/dump.txt
  2. 统计所有线程所处的状态
    grep java.lang.Thread.State dump.txt | awk '{print $2$3$4$5}' |sort | uniq -c
  3. 对于上面统计出来的数据分析,看看是否合理,假如waiting(waiting 到runalbe存在线程切换) 状态的线程太多,那么就应该到dump文件中看看这些waiting线程的信息,然后修改相应的配置。

死锁

上一篇下一篇

猜你喜欢

热点阅读