并发包_并发容器

 

 需求:解析Excel里面sheet的数据  或者爬虫,爬不同网页的数据  主线程等待所有线程完成解析,再提示解析完成

可以用countdownlatch代替join

并发包_初始化_02

 

 

await方法阻塞主线程,直到countdown变成0     countdown()方法将计数器减1    如果某个线程耗时过长,不能一直让主线程等待,可以用设定时间的await方法   countdownlatch初始化以后不能重新new一个数值,只能初始化一次

happens-before规则  一个线程调用countdownlatch先于另一个线程调用await方法

并发包_主线程_03

 

 

并发包_主线程_04

 

 

并发包_数据库连接_05

 

 并发包_数据库连接_06

 

 并发包_数据库连接_07

 

 实例 计算excel中每个sheet中的银流数量

并发包_数据库连接_08

 

 并发包_初始化_09

 

 并发包_并发容器_10

 

 区别

 

并发包_并发容器_11

 

 

 

semaphore   有限的公共资源  限制流量   如数据库连接

 

并发包_主线程_12

 

 如读取几万个文件的数据 因为都是io密集型的任务  可以用多线程并发读取    但数据库连接只允许10个连接     数据库连接池 

并发包_数据_13

 

 

 

 

 并发包_数据库连接_14

exchanger  --纸质的银行流水和电子的银行流水   是否一致

 并发包_数据库连接_15

 

 并发包_主线程_16

 

 并发包_初始化_17

 

 

 非阻塞算法在并发容器中的实现 - 分布式编程 - 博客园 (cnblogs.com)