Java的多线程问题,带jvm解析

Java的多线程问题

linux时间片一样
window优先级确定时间片多线程的开始,就是告诉cpu进入了就绪状态,cpu开始选择分配时间片,不是直接执行
同一时刻单个cpu之运行一个线程在这里插入图片描述
1.这就是线程,线程之间的顺序不定,可能线程后面的语句(main函数的)先执行,,但是注意main函数的相对位置不变
1.单多线程哪个好?
线程并不是同时,是轮流切换,多核cpu 效果好,单多线程,1.当出现cpu浪费用多线程,比如,网络请求,我想一万地方发送数据,返回数据一千字符,cpu处理非常快,传输50ms,花了cpu不到一毫秒,等待时间和处理时间差距过大,这时多线程快。但是线成之间时切换,一号秒左右,太多了,线程切换花的时间也很多。2.cpu浪费很少,单线程快我就++i操作,每次执行,cpu浪费很少,切换的的时间够cpu运行好多次。
2.多线程的并发,并行区别?
并发,多进程共同竞争同一份资源,
并行,是指多线程之间没有资源竞争
所有运行时的变量都在内存,通过总线和cpu相连t1,t2操作同一资源
t1.join下面的1必须等t1执行完
我只给你5ms时间片,没法预估执行完,到时间就切换
3.cpu速度不匹配的历史进步

  • cpu一个始终周期执行32位,就是32位 系统打开程序,是因为加载磁盘到内存,内存cpu速度差1:100,在内存到cpu浪费h还是很多
  • 于是想加cpu, 就算是四核,传输还是靠总线,高低电压,总线只传输给一个cpu,别的cpu闲着,所以有了高速缓存,现在好了,100始终周期的数据,只加载一次,就不再占用,支持了多核cpu,
  • 有了高速缓存,就会导致不安全问题,缓存的数据不是最新数据,数据库的都脏数据,所以我们有了信号量
  • 光纤比总线的好处,电信号不能并行传输,并行会电信号干扰,而光纤的波长不同,不会干扰
    4.CAS信号量机制
    比较版本再更新,就是类似数据库版本号,如果修改时版本号不一样,获取新的数据重新回去执行5.变量不能枷锁的,可以锁方法,锁共享资源修改的方法

注意锁的粒度
1.下面的锁方法很正规,锁到的是修改操作
2.分别锁get,set粒度太小,获取完随着就是放了,没效果!
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值