我目前正在尝试同时运行同一方法的多个方法。现在它只是一次做一个,然后一旦它循环通过所有它们就睡觉。我需要它通过该方法同时执行数组中的所有值。这是我目前的代码:
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
}
}
答案 0 :(得分:0)
Thread.sleep(10000)导致当前线程休眠10秒。这将是主要线程。你没有从主要线程中分离出任何线程,所以这就像你写的一样。
查看Java文档http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html
有一些拆分线程的例子。这可以帮助您找到解决方案。
答案 1 :(得分:0)
在Java 8中,您可以编写如下内容:
admins.parallelStream().forEach(keys -> checkGroup(api, keys));
然而,它将并行执行的项目数取决于系统。在任何情况下,除非你的系统至少有admins
中的项目处理器,否则你不可能并行完成所有这些处理器,无论你采用什么方法。