【问题标题】:Run method for all values in Array at once一次运行 Array 中所有值的方法
【发布时间】:2014-04-21 18:54:31
【问题描述】:

我目前正在尝试同时运行同一方法的多个方法。现在它一次只做一个,然后在循环遍历所有这些时睡觉。我需要它通过该方法同时执行数组中的所有值。这是我当前的代码:

public static void checkTimer(TS3Api api) {
    for (String keys : admins) {
        //What I need: Check Groups for all values in string AT THE SAME TIME
            checkGroup(api, keys);
    }
            try {
                //Sleep for 10 second
                Thread.sleep(10000);
            } catch (InterruptedException e) {
                // Do nothing
            }
    }

【问题讨论】:

  • 如果您想同时运行它们,您需要为每个键创建一个线程并同时执行它们。根据checkGroup 方法执行所需的时间,它可能仍然不会同时发生。
  • 添加到@AleksG 评论,checkGroup 也必须是线程安全的。

标签: java methods arraylist


【解决方案1】:

Thread.sleep(10000) 使当前线程休眠 10 秒。这将是主要线程。您还没有从主线程中分离出任何线程,所以这就像您编写的那样工作。

查看 Java 文档http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html

有一些分离线程的例子。这应该可以帮助您找到解决方案。

【讨论】:

    【解决方案2】:

    在 Java 8 中,您可以编写如下代码:

    admins.parallelStream().forEach(keys -> checkGroup(api, keys));
    

    但是,它将并行执行的项目数量取决于系统。在任何情况下,除非您的系统具有至少与 admins 中的项目一样多的处理器,否则您不太可能并行执行所有这些操作,无论您采用哪种方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-25
      • 1970-01-01
      • 2010-11-13
      • 2020-01-09
      • 1970-01-01
      • 2015-12-06
      • 2016-10-06
      • 1970-01-01
      相关资源
      最近更新 更多