Java 如何制作线程竞赛程序?
A必须创建一个线程竞赛程序,其中ThreadRace类将创建10个ThreadRaceCompetitor的实例。然后它会把它们都运行起来。将有一个名为ThreadRaceContext的results类,它将保存谁在哪个地方完成的记分卡Java 如何制作线程竞赛程序?,java,multithreading,Java,Multithreading,A必须创建一个线程竞赛程序,其中ThreadRace类将创建10个ThreadRaceCompetitor的实例。然后它会把它们都运行起来。将有一个名为ThreadRaceContext的results类,它将保存谁在哪个地方完成的记分卡 当ThreadRaceCompetitor完成比赛时,它必须通知ThreadRaceContext他的比赛号码和id,并且比赛已经结束。ThreadRaceContext将向控制台列出最终排名这不使用单独的类,但功能相同 public static void
当ThreadRaceCompetitor完成比赛时,它必须通知ThreadRaceContext他的比赛号码和id,并且比赛已经结束。ThreadRaceContext将向控制台列出最终排名这不使用单独的类,但功能相同
public static void main(String[] args) throws InterruptedException {
Map<Integer, Date> results = new HashMap<>();
IntStream.range(0,10).parallel().forEach(i->results.put(i,new Date()));
Thread.sleep(30);
results.forEach((key, value) -> System.out.println(key + " " + value.getTime()));
}
并更改IntStream.range0,10.parallel.forEachi->results.puti,新日期;到IntStream.range0,10.parallel.forEachi->doStuffi 您好,这可能是因为线程需要执行任何工作或延迟随机时间,或者只是生成,然后在完成时通知,而另一个类会记录时间和通知线程的时间。@mavriksc线程只需在完成时通知,而超类则必须记录所有结果。这太棒了!延迟的替代方案是什么?
private static void doStuff(int i) {
try {
Thread.sleep(2);
} catch (InterruptedException e) {
e.printStackTrace();
}
results.put(i,new Date());
}