孤尽班第八次课-集合与并发编程

本文探讨了集合规约中的HashMap数据结构,包括table、slot和bucket的概念,以及其哈希算法。在并行与并发编程方面,解释了并发与并行的区别,并分析了线程安全问题,提到了Java中的锁机制如AQS,以及保证高并发场景下线程安全的策略。此外,还提及了部署图关注的元素和锁在多线程环境中的作用。
摘要由CSDN通过智能技术生成

孤尽班第八次课-集合与并发编程

T31系统的功能树

用例图在关注什么?关注那些角色,角色能够干什么 。
功能树, 关注哪些大的功能模块,功能模块能够实现什么
用例图: 关注有哪些角色,乘客 车站运行 系统管理员
角色能够干什么,从用户角度出发。
功能树: 关注的有哪些大的功能模块, 功能模块能够实现什么能力。

部署图 关注 什么?
关注部署元素 1. 微服务 2. 数据库
关注部署关联元素: 1. 注册中心 2.消息中间件

集合规约
数据结构:
指逻辑意义上的数据组织方式以及相应的处理方式。处理方式是CRUD .  
HashMap 的基本概念:
table    存储所有节点数据的数组
slot  哈希槽 
bucket: 哈希桶 
HashMap 哈希算法
HashMap<Interger,String> map = new HashMap<13>;
 什么时候分配空间, 如何为13 初始容量分配存储空间 
 分配的空间是16
并行与并发

并行: 比如挂号 一个房间有两个医生
并发: 一个医生给多人看病
线程是不安全的就是交替执行,没有加锁,数据容易串起来。
同一CPU 不同时刻交替执行不同的方法,就是并发
不同CPU同一时刻执行不同的方法,就是并行

线程安全

线程安全问题,只有多线程环境才会出现,单线程串行执行不存在此问题。
保证高并发场景下线程安全,可以从以下四个维度考量:

  • 数据单线程内可见
  • 只读对象
  • 线程安全
  • 同步锁机制
什么是锁
 1.在计算机信息世界里,单机线程时代没有锁的概念。
 资源竞争的出现 
 2. 自从出现了资源竞争, 人们才意识到需要对部分场景的执行现场加锁,昭告天下,标识自己的短暂 拥有。
 Java  中常见锁实现方式
 (1)  用并发包中的锁类
 (2) 利用同步代码块 
AQS 透过现象看本质
Abstract 抽象: 包含 tryAcquire、tryRelease 等 5 个抽象方法,具体由子类实现;
Queued 队列: 利用队列来管理竞争共享资源的多线程,这个队列是 Node 节点的引用虚拟实现;
Synchronizer 同步器:是一个解决多线程同步问题的工具; 
锁到抢的是status 值
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值