Har*_*ari 6 java multithreading
在main方法中,子线程使用java 1.5执行器服务机制启动.如何使主线程等到子线程完成?
public class MainClass {
public static void main(String[] args) {
ExecutorService executorService=null;
try {
executorService=Executors.newFixedThreadPool(1);
executorService.execute(new TestThread());
System.out.println("Main program exited...");
} catch (Exception e) {
e.printStackTrace();
} finally {
executorService.shutdown();
}
}
}
public class TestThread extends Thread {
public TestThread() {
}
public void run() {
try {
for (int i=0;i<10;i++) {
System.out.println(i);
TimeUnit.SECONDS.sleep(5);
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
Run Code Online (Sandbox Code Playgroud)
根据经验,你不应该直接扩展Thread,因为这只会导致混乱,就像它在这里一样.
您的TestThread永远不会启动,因此您无法加入它.它所做的只是作为Runnable的行为(这是你应该使用的).
如果要等待任务完成.
Future future = executorService.submit(new TestRunnable());
// wait for the task to complete.
future.get();
Run Code Online (Sandbox Code Playgroud)
BTW:Java 1.4.2之后是Java 5.0,后来是Java 6和Java 7.