Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何制作线程竞赛程序?_Java_Multithreading - Fatal编程技术网

Java 如何制作线程竞赛程序?

Java 如何制作线程竞赛程序?,java,multithreading,Java,Multithreading,A必须创建一个线程竞赛程序,其中ThreadRace类将创建10个ThreadRaceCompetitor的实例。然后它会把它们都运行起来。将有一个名为ThreadRaceContext的results类,它将保存谁在哪个地方完成的记分卡 当ThreadRaceCompetitor完成比赛时,它必须通知ThreadRaceContext他的比赛号码和id,并且比赛已经结束。ThreadRaceContext将向控制台列出最终排名这不使用单独的类,但功能相同 public static void

A必须创建一个线程竞赛程序,其中ThreadRace类将创建10个ThreadRaceCompetitor的实例。然后它会把它们都运行起来。将有一个名为ThreadRaceContext的results类,它将保存谁在哪个地方完成的记分卡


当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());
}