我们的用户量在10万左右,每个用户都有各自的积分,避免新注册的用户信息
在短时间内出现大量积分,造成积分迅速的增长,我们需要每天进行统计当天的积分,当用户
超过1000积分就算异常,对于超过1000积分的用户发送给管理员进行处理,具体实现是,创建
一个原子类,用来存储有多少异常积分的用户信息,我们将所有的用户查询出来,返回到list集
合,那么我们需要通过谷歌工具类lists中的partition方法将上面的list分成10个小的list集
合,每个list 集合里面有一万条用户信息,创建CountDownLatch对象,CountDownLatch的 参数
就是我们的10个list集合,我们就需要进行遍历每个子线程,使用多线程的方式进行提高执行
效率,然后在遍历每个子线程中的每个用户积分,如果用户积分大于等于设定的阈值1000,则
认为是异常积分,将异常的积分用户放入到集合列表中,通过原子类中的integer中的
incrementAndGet()增加积分异常用户的数量,当每个子线程完成线程任务的时候需要调用
countDown()减少计数器的值,在主线程中,通过await()方法等待所有的子线程完成任务,一旦
计数器为0,就表示所有的子线程执行完毕,主线程继续执行后续操作,把查询出来的异常积分
用户发送给管理员,我们可以使用xxxjob定时再每天晚上11:30自动执行一次。通过代码实现这些