并发编程学习笔记-day02

一、多线程执行时的效果 1、多线程执行是依靠计算机的任务调度器来进行调度执行的 所以我们只能控制线程的启动而不能控制线程的执行而且计算 机系统会利用时间片来进行线程的上下文切换 2、如果电脑是单核CPU(现实中一般在虚拟机设置单核)多线程 会并发执行,执行时会导致CPU100%被占用会导致其他进程无法执行

二、线程的查看与终止 1、windows windows可以通过jps(jdk自带)命令在控制台直接看Java执行的线程信息 2、Linux 相关命令用时查看即可 3、远程监控 使用java自带监控工具jconsole

三、线程的运行原理——栈帧debug 1、线程执行时栈会给线程分配一块栈内存空间 2、线程执行方法时会给方法在线程栈内存空间内分配栈帧内存 3、一个线程只有一个活动栈帧 4、执行方法时成员变量存储在栈帧局部变量区中

四、线程运行原理-栈帧图解

五、线程上下文切换

1、发生的原因

1.1线程运行时的时间片用完了

1.2垃圾回收(所有线程暂停垃圾回收线程运行)

1.3让给优先级高的线程

1.4线程使用了wait、sleep、yield、join、lock、synchronize等方法

注:1.1-1.3为被动发生线程上下文切换,1.4为主动发生

2、Context Switch频繁发生会影响性能

3、Context Switch 发生时操作系统会保存线程的状态 恢复另一个线程的状态,相对应的概念便是程序计数器,程序计数器会保存线程下一条指令执行的地址是线程私有

4、线程的状态包括程序计数器以及虚拟机每个栈帧的信息如局部变量表,返回地址,操作数栈,方法区

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值