Java——使用多线程模拟真实高并发业务并保证安全性(二)
作者专注于Java、架构、Linux、小程序、爬虫、自动化等技术。 工作期间含泪整理出一些资料,微信搜索【javaUp】,回复 【java】【黑客】【爬虫】【小程序】【面试】等关键字免费获取资料。技术交流、项目合作可私聊。
前言
兄弟篇: Java——使用多线程模拟真实高并发业务并保证安全性(一)
一、需求
使用100个线程把一个存放10000条数据的list数据删除,要求保证安全性,并正确记录数量。
二、实现
在看下面的代码之前,读者朋友可以自己先试一试怎么实现上面的需求,然后跟本文的实现方式对比一下。
2.1 使用技术
可重入锁ReentrantReadWriteLock,这里没有使用到CopyOnWriteArrayList,因为ReentrantReadWriteLock已经起到了CopyOnWriteArrayList对容器remove的安全性的同等作用,另外还有对num--的保护。