Ai
1 Star 0 Fork 0

小西学编程/java-learning

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
CyclicBarrierTest.java 1.96 KB
一键复制 编辑 原始数据 按行查看 历史
yulijun 提交于 2022-01-01 15:08 +08:00 . CyclicBarrier测试代码
package net.weichitech.juc;
import java.util.concurrent.BrokenBarrierException;
import java.util.concurrent.CyclicBarrier;
public class CyclicBarrierTest {
private static SexStatistics[] sexStatisticsData;// 统计数据存放数组
private static CyclicBarrier cb;// 循环栅栏
public static void main(String[] args) {
sexStatisticsData = new SexStatistics[5];
cb = new CyclicBarrier(5, new Runnable() {
@Override
public void run() {
// 最终汇总男女生数量
int totalMale = 0, totalFemale = 0;
for (SexStatistics stat : sexStatisticsData) {
totalMale += stat.male;
totalFemale += stat.female;
}
System.out.println("The school has male:" + totalMale + ",female:" + totalFemale);
}
});
// 这里启动5个线程去执行每个班级的男女统计
for (int i = 0; i < 5; i++) {
new Thread(new TeacherWork(i)).start();
}
}
static class TeacherWork implements Runnable {
private int classNo;
public TeacherWork(int classNo) {
this.classNo = classNo;
}
@Override
public void run() {
SexStatistics stat = new SexStatistics();
stat.male = (int) (Math.random() * 50); // 这里用随机数模拟统计
stat.female = (int) (Math.random() * 50); // 这里用随机数模拟统计
sexStatisticsData[classNo] = stat;
System.out.println("Class:" + classNo + " has male:" + stat.male + ",female:" + stat.female);
try {
cb.await();
} catch (InterruptedException e) {
return;
} catch (BrokenBarrierException e) {
return;
}
}
}
static class SexStatistics {
private int male;
private int female;
}
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Java
1
https://gitee.com/xiaoxijava/java-learning.git
git@gitee.com:xiaoxijava/java-learning.git
xiaoxijava
java-learning
java-learning
master

搜索帮助