我想確定在執行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