多线程不管是extends Thread 还是 implements Runnable 都是要重写run 方法来实现,这两种方式子线程都没有返回值。
如果要实现主线程对子线程的监听,让子线程有返回值,可以用implememts Callable<T> 方式:
import java.util.concurrent.Callable; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; public class App6 { public static void main(String[] args) throws Exception { ExecutorService newCachedThreadPool = Executors.newCachedThreadPool(); Future<String> submit = newCachedThreadPool.submit(new TaskCallable()); String result = submit.get(); //获取返回值 System.out.println(result); } } class TaskCallable implements Callable<String>{ @Override public String call() throws Exception { System.out.println(Thread.currentThread().getName()); return "Hello World"; } }