并发编程读书笔记(一)入门认识

即使是理器也支持多线行代CPU过给每个线程分配CPU时间片来实现
个机制。时间片是CPU分配各个线程的时间,因为时间片非常短,所以CPU不停地切
换线行,多个线程是同时执行的,时间片一般是几十毫秒(ms)。
在切前会保存上一个任的状,以便下次切个任务时,可以再加载这
个任的状。所以任从保存到再加程就是一次上下文切换。
 
 
当并发执行累加操作不超百万次,速度会比串行行累加操作要 慢。
是因为线程有建和上下文切的开
 
减少上下文切的方法有无发编程、CAS算法、使用最少线程和使用程。
 
·发编程。多线锁时,会引起上下文切,所以多线理数据,可以用一
法来避免使用,如将数据的ID按照Hash算法取模分段,不同的线理不同段的数据。
·CAS算法。JavaAtomic包使用CAS算法来更新数据,而不需要加锁。cas锁
·使用最少线程。避免建不需要的线程,比如任很少,但是建了很多线程来理,
会造成大量线程都于等待状

 

一旦出业务是可感知的,因不能继续提供服了,那么只能通dump线
到底是哪个线程出问题
 
 
避免死的几个常方法。
·避免一个线程同时获取多个
·避免一个线程在内同占用多个源,尽量保每个只占用一个源。
·尝试使用定时锁,使用lock.tryLocktimeout)来替代使用内部机制。
·于数据库锁,加和解在一个数据库连接里,否会出的情况。

 

源限制是指在行并发编,程序的行速度受限于算机硬件源或源。
硬件源限 制有带宽的上/速度、硬盘读写速度和CPU理速度。
源限制有数据接 数和socket接数等。
 
在并发编程中,将代码执行速度加快的原是将代中串行行的部分成并发执行,
但是如果将某段串行的代发执行,因受限于源,仍然在串行行,这时候程序不
会加快行,反而会更慢,因增加了上下文切度的时间
 
 

于硬件源限制,可以考使用集群并行执行程序  

 可以通过“数据ID%机器数”,计算得到一个机器编号,然后由对应编号的机器处理这笔数据

源限制,可以考使用源池将源复用。比如使用接池将数据Socket
接复用,或者在webservice接口取数据,只建立一个接。

 

如何在源限制的情况下,程序行得更快呢?方法就是,根据不同的源限制
程序的并度,比如下文件程序依于两个——带宽和硬盘读写速度。有数据操作
,涉及数据库连接数,如果SQL行非常快,而线程的数量比数据库连接数大很多,
某些线程会被阻塞,等待数据库连接(没说具体怎么解决 😓)
 
 
 
 
 
 
 
 
 
展开阅读全文

Windows版YOLOv4目标检测实战:训练自己的数据集

04-26
©️2020 CSDN 皮肤主题: 游动-白 设计师: 上身试试 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值