如何制作线程竞赛程序?

时间:2019-06-05 18:54:19

标签: java multithreading

必须编写一个线程竞赛程序,其中ThreadRace类将创建10个ThreadRaceCompetitor的实例。然后它将全部运行。将有一个名为ThreadRaceContext的结果类,该类将保留谁在哪个位置完成的记分卡。

当ThreadRaceCompetitor完成比赛时,它将必须通知ThreadRaceContext他的比赛编号(一个ID),并且已经完成。 ThreadRaceContext会将最终排名列出到控制台中

1 个答案:

答案 0 :(得分:0)

这不使用单独的类,但在功能上是相同的。

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == foo) {
        // do something
    }
}

但没有延迟,它们似乎都在同一时间结束

  

0 1559767161100
  1 1559767161100
  2 1559767161100
  3 1559767161100
  4 1559767161100
  5 1559767161100
  6 1559767161100
  7 1559767161100
  8 1559767161100
  9 1559767161100

即使执行100次,它们也会同时完成,甚至在时间戳之前做一些简单的数学运算。为每个线程添加延迟确实会导致时间不同。我认为电脑太快了,以致毫秒内不会有差异。

* edit:要添加延迟,我将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())); } 声明为main之前的静态外部,然后

results

并将private static void doStuff(int i) { try { Thread.sleep(2); } catch (InterruptedException e) { e.printStackTrace(); } results.put(i,new Date()); } 更改为IntStream.range(0,10).parallel().forEach(i->results.put(i,new Date()));