编写一个投票系统要求:jav开启4个线程进行投票票放入一个集合中每个线程投票100张循环100次向集合中加入100个元素投票完成后控制台输出集合中的票数为400
以下是一个简单的投票系统,满足题目要求:
import java.util.ArrayList;
import java.util.List;
public class VoteSystem {
public static void main(String[] args) {
List<String> votes = new ArrayList<>(); // 存储投票结果的集合
// 创建4个投票线程
Thread thread1 = new Thread(new Voter(votes));
Thread thread2 = new Thread(new Voter(votes));
Thread thread3 = new Thread(new Voter(votes));
Thread thread4 = new Thread(new Voter(votes));
// 启动4个投票线程
thread1.start();
thread2.start();
thread3.start();
thread4.start();
try {
// 等待4个投票线程执行完毕
thread1.join();
thread2.join();
thread3.join();
thread4.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
// 输出投票结果
System.out.println("投票结果共" + votes.size() + "张票");
}
}
class Voter implements Runnable {
private List<String> votes; // 投票结果存储的集合
public Voter(List<String> votes) {
this.votes = votes;
}
@Override
public void run() {
for (int i = 0; i < 100; i++) {
votes.add("Candidate A"); // 假设只有一个候选人
}
}
}
在上面的代码中,我们创建了一个VoteSystem类,它包含了main方法,用于启动投票系统。在main方法中,我们首先创建了一个空的ArrayList对象,用于存储投票结果。然后,我们创建了4个线程,每个线程都是一个Voter对象,它们共享投票结果的集合。接着,我们分别启动这4个线程,并等待它们执行完毕。最后,我们输出投票结果的总数。
Voter类实现了Runnable接口,它包含了一个votes成员变量,用于存储投票结果。在run方法中,我们使用一个循环,将100张票投给候选人A(假设只有一个候选人)。每次循环,我们向votes集合中添加一个元素,表示投票结果。由于votes集合是线程不安全的,所以我们需要使用synchronized关键字来保证多个线程对它的访问是同步的。
原文地址: http://www.cveoy.top/t/topic/bJPd 著作权归作者所有。请勿转载和采集!