线程资源不释放,不代表线程一直占用 cpu的资源,线程资源不释放和 线程一直占用 cpu资源,对并发度的影响

线程资源被占用,和cpu被这个线程占用是有区别的

			1.线程资源被占用,是指线程中的 这些操作(指令)一直没执行完,那线程就不能
			  去更新执行(即存其他操作的指令),就会导致 其他操作 没有线程存,而不能执行
			  
			2.而 线程资源被占用,不代表cpu一直被这个 线程占用,只有这个线程的 某个操作
			  是原子性的,或者,是 非阻塞IO ,才会占用 这个cpu
			  
			3. cpu被 这个线程占用,比 线程资源得不到释放 严重的 多,线程资源得不到释放
			   只是 说 用来存其他指令的 线程少,但是不代表 不能存,而cpu被线程占用,那
			   就算你线程量 充足,其他所有 请求指令,都能被 线程存起来,但是没有cpu资源
			   根本得不到执行

线程 代表 能 存指令的 空间,这是 有限的
但 cpu 是 往 这些 空间 取指令执行的 资源 ,更有限
线程资源不释放,代表 这个空间的 指令 一直不能更新,即不能存其他请求的指令
cpu资源 被线程占用 不释放,代表cpu 一直只能 执行这个线程的指令,不被释放,就不能 去 执行其他线程的指令

而我们说的,提高并发度,提高请求的响应度,就得从 线程资源,cpu资源,以及 指令的原子性 这 3方面去考虑,而正好 我们 程序的执行 就是 1.指令 2.线程 3.cpu

	1.线程资源(影响 系统的 并发度 即 所有指令的 并发度)
		1.线程 资源越多越好,就有更多 的 资源 去 存 更多的 指令
		
		2.线程 如果 一直不释放即 一直存的 这些指令,就不能去 存其他指令
		  导致 不被释放的原因 有
		  		1. 这个线程的指令,不能顺利的执行完,即执行失败,导致线程不能被释放
		  		   从而,去被 分配 存 其他指令
		  		2. 这个 线程 存的 指令 是 同步锁指令(或者说 原子性指令),那么此时就连
		  		   cpu都不能 释放,得执行这个线程

		3.所以,我们能提高的 就是,线程资源数
			1.直接方法,搭集群
			2.间接方法,让线程资源尽快释放,即指令 得写好写正确,或者指令错误,
						也要,采用备选方案,去完成指令的执行,进而去释放 线程



	2.cpu 资源(影响 系统的并发度 即 所有指令的 并发度)
		1.一般 cpu数量是有限的
		2. 要让 cpu资源 能 一直处于 “灵活” 状态,即不要 被某个线程 一直占用,
		   而这就 得提到 指令了,指令 直接 影响 cpu资源的 状态


	3.指令
		1.指令 如果是原子性的,那么 cpu就会 一直处理这个 原子操作,知道执行完才 可是否
		  所以,我们 对于 原子指令,要让他变少,变小(即原子指令小,则这个指令就可以尽快执行)
		  原子指令,一旦多,那么cpu被占用的 几率就会变大,原子指令 一旦 大,那么
		  cpu被 占用的 几率 也会变大
		  (影响系统的 并发度 即 所有指令的 并发度)


		2.指令 如果是,同步锁形式的,那么首先满足1原子性
		  而且,对于 这个指令 的 并发性 就会 更低
		  (影响 所有指令的并发度 + 特别这个指令的并发度 为0)

	4.对于并发度,分为这个系统的并发度,和 某个指令的 并发度
		1. 同步锁 以外的,都是 整个系统的 并发度,整个系统的 并发度,就从线程资源
		   cpu 资源,以及 指令是原子性的 方面考虑即可了

		2.如果 指令是同步锁的,那么这个 指令的并发度 为0
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值