多线程


状态

线程主要有“新建”(NEW)、“就绪”(RUNNABLE)、“运行”(RUNNING)、“阻塞”(BLOCKED)、“死亡”(DEAD)五种状态。
**
**
多处理器,处理器提供了总线锁定缓存锁定两个机制来保证复杂内存操作的原子性。
当处理器要操作一个共享变量的时候,其在总线上会发出一个 Lock 信号,这时其它处理器就不能操作共享变量了,该处理器会独享此共享内存中的变量。但总线锁定在阻塞其它处理器获取该共享变量的操作请求时,也可能会导致大量阻塞,从而增加系统的性能开销。
于是,后来的处理器都提供了缓存锁定机制,也就说当某个处理器对缓存中的共享变量进行了操作,就会通知其它处理器放弃存储该共享资源或者重新读取该共享资源。目前最新的处理器都支持缓存锁定机制。
**
Linux 内核提供的 vmstat 命令,来监视 Java 程序运行过程中系统的上下文切换频率。
[root@aliyun ~]# vmstat 2 //时间间隔
procs ———–memory———- —swap– —–io—- -system– ——cpu—–
r   b   swpd   free   buff   cache   si   so    bi    bo   in   cs us sy id wa st
2  0      0   82800 133624 537868    0    0     4    13   12   25  1  0 99  0  0
image.png
如果是监视某个应用的上下文切换,可以使用 pidstat 命令监控进程的 上下文切换。
 pidstat -w -l -p 26571 1 100

**


文章作者:   future
版权声明:   本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 future !
 上一篇
软件工程师-职业发展路径 软件工程师-职业发展路径
1.关于职业规划很程序员每天都在写代码,每天都很忙,而当面试官问他:“你的职业规划是什么?”程序员答:“没有”。那如果让你选择一个角色你会选择什么?比如技术主管。程序员答:“CEO吧”。我。。。。。。我们应该给自己制定一个职业规划,对未来的
2020-09-05 future
下一篇 
锁优化 锁优化
垃圾回收会导致上下文切换很多 JVM 垃圾回收器(serial 收集器、ParNew 收集器)在回收旧对象时,会产生内存碎片,从而需要进行内存整理,在这个过程中就需要移动存活的对象。而移动内存对象就意味着这些对象所在的内存地址会发生变化,因
2020-09-04 future
  目录