`
BruceChan_GY
  • 浏览: 7287 次
社区版块
存档分类
最新评论

《Java并发编程的艺术》读书笔记一

    博客分类:
  • JVM
 
阅读更多
上下文切换

线程执行时需要分配CPU资源,CPU按照时间片分给线程执行,在线程时间片用完的情况下,需要保存现场,将执行权转让给其他线程。当该线程重新有机会执行时,需要加载之前的现场信息,然后执行。

从保存现场 到下次加载执行, 就是一次上下文切换,英文叫: context switch

在linux中,可以通过vmstat来查看系统的context switch次数:

   System
       in: The number of interrupts per second, including the clock.
       cs: The number of context switches per second.

我们看到此时OS的cs基本在1000以内。


procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
1  0      0 404644  66656 619388    0    0     0    20  157  309  1  0 99  1  0
0  0      0 404644  66656 619396    0    0     0     0  192  529  2  2 97  0  0
0  0      0 404644  66656 619396    0    0     0     0  516 1573  8  5 88  0  0
0  0      0 404644  66656 619396    0    0     0     0  610  656  3  4 93  0  0
0  0      0 404644  66656 619396    0    0     0     0  480  575  2  2 96  0  0
0  0      0 404644  66656 619396    0    0     0     0  841 1238  3  4 93  0  0
0  0      0 404644  66656 619396    0    0     0     0  465  570  2  5 93  0  0



我们执行一个java程序,2个线程相互等待执行唤醒,继续观察context。

此时发现cs基本都在2W多.

另外,发现in也很多,in是中断次数,因为我们用了LockSupport.

r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0      0 397152  66808 619640    0    0     0     0 20800 83443 15 32 53  0  0
1  0      0 397152  66808 619640    0    0     0     0 29901 62160  2 26 72  0  0
1  0      0 397152  66808 619640    0    0     0     0 24617 51618  2 21 77  0  0
1  0      0 397152  66816 619632    0    0     0    48 26312 54760  1 26 74  0  0
1  0      0 397152  66816 619640    0    0     0     0 27106 58009  1 22 77  0  0
1  0      0 397152  66816 619640    0    0     0     0 27557 57114  2 23 75  0  0
1  0      0 397152  66816 619640    0    0     0     0 23964 49911  1 20 78  0  0
1  0      0 397152  66816 619640    0    0     0     0 21619 45313  1 23 76  0  0
2  0      0 397028  66816 619640    0    0     0     0 23673 53251  4 20 75  0  0
1  0      0 397028  66824 619632    0    0     0    12 21042 52601  8 26 66  1  0
1  0      0 396508  66824 619640    0    0     0     0 29707 60314  3 22 75  0  0


同时我们看到,CPU的使用率上,20+% 都用于sys,说明context switch在浪费CPU
分享到:
评论

相关推荐

    java并发编程实践pdf笔记

    这本书的读书笔记涵盖了多个关键知识点,旨在帮助读者深入理解Java并发编程的核心概念。 1. **线程和进程的区别** - **线程** 是程序执行的最小单位,一个进程中可以有多个线程同时执行,共享同一块内存空间,通信...

    Java并发编程学习笔记.rar

    这本"Java并发编程学习笔记"可能是作者在深入研究Java并发特性、工具和最佳实践过程中积累的心得体会。下面,我们将根据这个主题,探讨一些关键的Java并发编程知识点。 1. **线程与进程**:在多任务环境中,线程是...

    Java并发编程系列心得笔记

    Java并发编程系列心得笔记,可以参考,欢迎共同交流学习

    java并发编程实践笔记

    ### Java并发编程实践笔记知识点详解 #### 一、保证线程安全的方法 1. **不要跨线程访问共享变量:** 当多个线程共享某个变量时,若其中一个线程修改了该变量,其他线程若没有正确同步,则可能读取到错误的数据。...

    Java并发编程学习笔记

    Java并发编程是Java开发中必不可少的一部分,涉及到多线程、同步机制、线程池以及并发工具类等多个核心知识点。以下是对这些主题的详细说明: 1. **线程安全与锁 Synchronized 底层实现原理**: 线程安全是指在多...

    java并发编程的艺术读书笔记

    java并发编程的艺术读书笔记根据章节整理的核心内容,便于自己理解

    读书笔记:Java并发编程之美笔记.zip

    读书笔记:Java并发编程之美笔记

    Java并发编程笔记

    ### Java并发编程知识点详解 #### 一、线程状态与管理 在Java中,线程具有多种状态,这些状态的变化反映了线程在其生命周期中的不同阶段。理解这些状态及其转换对于编写高效、健壮的并发程序至关重要。 - **NEW**...

    Java并发编程的艺术.md

    《Java并发编程的艺术》笔记 第一章 并发编程的挑战 第二章 Java并发机制的底层实现原理 volatile的两条实现原则: 1. Lock前缀指令会引起处理器缓存回写到内存 2. 一个处理器的缓存回写到内存会导致其他...

    读书笔记-Java并发编程实战-基础篇

    在Java并发编程中,数据的封装与访问控制、线程安全性的考量、同步机制的使用是重要的基础概念和技巧。以下是从给出的文件内容中提取出的详细知识点: 1. 数据封装与访问控制:确保内部私有数据不被轻易访问,并且...

    java并发编程笔记

    ### Java并发编程笔记 #### 实现Runnable接口与继承Thread类 在Java中,实现多线程功能主要有两种途径:一种是通过实现`Runnable`接口,另一种则是通过继承`Thread`类。这两种方式各有优劣,具体选择哪一种取决于...

    java并发编程实践笔记资料.pdf

    Java并发编程实践笔记是一份关于Java并发编程的实践笔记,涵盖了多种关于线程安全、并发编程的实践经验和原则。下面是从笔记中总结的知识点: 1. 保证线程安全的三种方法:不要跨线程访问共享变量,使用final类型的...

    Java并发编程实战-读书笔记

    《Java并发编程实战》个人读书笔记,非常详细: 1 简介 2 线程安全性 3 对象的共享 4 对象的组合 5 基础构建模块 6 任务执行 7 取消与关闭 8 线程池的使用 9 图形用户界面应用程序 10 避免活跃性危险 11 性能与可...

    《java并发编程实战》读书笔记-第3章-对象的共享

    《java并发编程实战》读书笔记-第3章-对象的共享,脑图形式,使用xmind8制作 包括可见性、发布与逸出、线程封闭、不可变性、安全发布等内容

    java并发编程学习笔记

    ### Java并发编程学习笔记知识点详解 #### 一、Java并发编程概述 Java并发编程是指在Java应用程序中同时执行多个操作的技术。它通过多线程、线程池等机制实现资源的有效利用,提高程序运行效率。Java并发编程的...

    Java并发编程与高并发解决方案-学习笔记-www.itmuch.com.pdf

    本文将基于文档《Java并发编程与高并发解决方案-学习笔记***.pdf》中提供的内容,来详细阐述并发编程和高并发的基本概念、CPU多级缓存与缓存一致性、以及Java内存模型。 ### 并发与高并发概念 在现代多线程编程中...

    读书笔记:Java并发编程之美读书笔记.zip

    读书笔记:Java并发编程之美读书笔记

    Java并发编程(学习笔记).xmind

    Java并发编程 背景介绍 并发历史 必要性 进程 资源分配的最小单位 线程 CPU调度的最小单位 线程的优势 (1)如果设计正确,多线程程序可以通过提高处理器资源的利用率来提升系统吞吐率 ...

    《java并发编程实战》读书笔记-第2章-线程安全性

    《java并发编程实战》读书笔记-第2章-线程安全性,脑图形式,使用xmind8制作 包括引言、线程安全性定义、原子性、加锁机制、使用锁保护状态、活跃性与性能等内容

Global site tag (gtag.js) - Google Analytics