什么是线程安全?通俗的讲,就是保证多个线程同时对某一对象进行操做时不会出错。好比两个客户端,同时对某个课程进行报名操做并记录总数,若是不加以并发控制,那么就会出现对当前报名总数脏读的状况。数据库
企业微信部门建立安全
总结:线程安全问题出现的三个必要条件:服务器
当服务器分布式集群形式时,会产生一个问题,当多个订课请求打到不一样的服务器上,而多个服务器对已定课程总数的读取课程中产生脏读的问题,就叫分布式锁问题微信
总结:当多个线程同时对某一对象进行读写操做时,好比读减库存,排重写入逻辑主要注意线程安全和分布式锁问题,须要对读写操做进行一个分布式的并发场景测试多线程
一、表锁定:更新/删除操做会添加排他锁。此类操做的where条件若是未添加索引会升级为表级别锁定,致使其余逻辑对该表的操做失败。并发
二、事务中死锁:两个事务都持有对方须要的锁,而且在等待对方释放,而且双方都不会释放本身的锁。分布式
当咱们在进行混合场景测试时,发现当分发任务执行时,会有大量的线索操做大量超时报错,最后排查是由于更新分发结果逻辑包含未加索引的检索条件升级为表锁,致使新线索的插入操做超时报错ide
总结:当多个逻辑同时处理某个表的数据时,须要考虑这些逻辑并行处理的场景测试