我想确定在执行100个任务的5个线程上执行任务的平均时间。如何在Java中的Y线程上运行X任务?
对于时间meassuring目的,我使用nanoTime()
任务是调用一个具体的方法,我们称之为foo();
我不会创建任何其他类。
在我的代码我创建了一个任务:
Runnable thExecute = new Runnable(){
@Override
public void run(){
foo();
}
};
然后我创建一个线程:
Thread th = new Thread(thExecute);
long start = System.nanoTime();
th.run();
long stop = System.nanoTime();
这将是巨大的,如果我有相同数量的任务的线程。 我试图创建线程和任务的数组:
Runnable[] thExecutes = new Runnable[100];
Thread[] ths = new Thread[5];
但现在我不知道下一步该怎么做。我知道他们应该排队,可能我应该使用Executor
课程。我使用Java 6.编辑: 起初我并不是指我写的东西。现在我知道我想要平均时间+最高时间。
查看[Executor界面](https://docs.oracle.com/jav) ase/7/docs/api/java/util/concurrent/Executor.html) – jhamon
您可以使用Executors.newFixedThreadPool(5),然后提交您的100个Runnables。 https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/Executors.html#newFixedThreadPool%28int%29 – Thilo