需求:解析Excel里面sheet的数据 或者爬虫,爬不同网页的数据 主线程等待所有线程完成解析,再提示解析完成
可以用countdownlatch代替join
await方法阻塞主线程,直到countdown变成0 countdown()方法将计数器减1 如果某个线程耗时过长,不能一直让主线程等待,可以用设定时间的await方法 countdownlatch初始化以后不能重新new一个数值,只能初始化一次
happens-before规则 一个线程调用countdownlatch先于另一个线程调用await方法
实例 计算excel中每个sheet中的银流数量
区别
semaphore 有限的公共资源 限制流量 如数据库连接
如读取几万个文件的数据 因为都是io密集型的任务 可以用多线程并发读取 但数据库连接只允许10个连接 数据库连接池