开启4个线程进行投票票放入一个集合中每个线程投票100张循环100次向集合中加入100个元素投票完成后控制台输出集合中的票数为400
这是一个示例代码,实现了4个线程并发投票的功能:
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class VoteDemo {
public static void main(String[] args) {
List<Integer> votes = Collections.synchronizedList(new ArrayList<Integer>());
// 创建一个同步的List,用于存放投票结果
for (int i = 0; i < 4; i++) {
new Thread(new Voter(votes)).start();
}
// 创建4个线程进行投票
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
// 等待一段时间让所有线程完成投票
System.out.println("Total votes: " + votes.size());
// 输出投票结果的总数
}
static class Voter implements Runnable {
private List<Integer> votes;
public Voter(List<Integer> votes) {
this.votes = votes;
}
@Override
public void run() {
for (int i = 0; i < 100; i++) {
votes.add(i);
}
}
}
}
运行结果:
Total votes: 400
注意,为了保证多个线程同时对集合进行操作时不会出现线程安全问题,我们使用了一个同步的List(通过Collections.synchronizedList()方法创建),这样每个线程对集合的访问都会被同步,避免了可能的竞态条件。
原文地址: https://www.cveoy.top/t/topic/bLZo 著作权归作者所有。请勿转载和采集!