导入java.util.concurrent.CountDownLatch;
导入java.util.concurrent.ExecutorService;
导入java.util.concurrent.Executors;
导入java.util.concurrent.atomic.AtomicInteger;
public class IncrTest {
public static void concurrenceTest() {
/**
* 模拟高并发代码
*/
final AtomicInteger atomicInteger = new AtomicInteger(0 );
最终CountDownLatch countDownLatch = new CountDownLatch(1000); // 相当于一个计数器,当一切就绪后,一起执行,模拟多并发,保证并发量
final CountDownLatch countDownLatch2 = new CountDownLatch(1000); // 确保所有线程在打印 atomicInteger
ExecutorService executorService = Executors.newFixedThreadPool(10 );
尝试{
对于(int i = 0; 我 < 1000; 我++ ) {
executorService.submit( new Runnable() {
@覆盖
公共 无效运行(){
尝试{
countDownLatch.await(); //一直阻塞当前线程,直到定时器值为0,保证并发并发
} catch (InterruptedException e) {
e.printStackTrace();
}
//每个线程增加1000次,每次增加1
for ( int j = 0; j < 1000; j++ ) {
atomicInteger.incrementAndGet();
}
countDownLatch2.countDown();
}
});
countDownLatch.countDown();
}
countDownLatch2.await(); // 确保所有线程都执行
完毕 System.out.println(atomicInteger);
executorService.shutdown();
}捕获(异常 e){
e.printStackTrace();
}
}
public static void main(String[] args)抛出InterruptedException {
竞赛测试();
}
}
以上就是极悦小编介绍的"使用CountDownLatch模拟高并发场景",希望对大家有帮助,想了解更多可查看Java极悦在线学习。极悦在线学习教程,针对没有任何Java基础的读者学习,让你从入门到精通,主要介绍了一些Java基础的核心知识,让同学们更好更方便的学习和了解Java编程,感兴趣的同学可以关注一下。
你适合学Java吗?4大专业测评方法
代码逻辑 吸收能力 技术学习能力 综合素质
先测评确定适合在学习