我必須同時執行我的類的多個實例。我寫下面的代碼如下。我以兩種方式完成了它。但我沒有看到區別。平行運行線程的正確方法是什麼?並行執行java中的多線程
謝謝。
這裏的片段:
public class MyClass {
public MyClass() {
runnable = true;
}
public boolean isRunnable() {
return runnable;
}
public static void main(String[] args) throws InterruptedException {
/* METHOD 1
MyClass myclass = new MyClass();
if (myclass.isRunnable()) {
for (int i = 0; i < loop; i++) {
myclass.execTask();
Thread.sleep(sleep);
}
}
*/
//METHOD 2
final MyClass myclass = new MyClass();
ExecutorService threadPool = Executors.newFixedThreadPool(threadNo);
for (int i = 0; i < threadNo; i++) {
threadPool.submit(new Runnable() {
public void run() {
for (int i = 0; i < loop; i++) {
myclass.execTask();
try {
Thread.sleep(sleep);
} catch (InterruptedException ex) {
Logger.getLogger(MyClass.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
});
}
threadPool.shutdown();
public void execTask(){
.........
}
}
}
平行或同時? –
BTW:'myclass.execTask;'什麼也不做 - 你應該至少使用'myclass.execTask();'。 – OldCurmudgeon
已更正。謝謝指出。 – user907810