1、入参
submit:
execute:
从上图可以看到submit可以执行Runnable(继承Runnable和实现Thread均可),也可以执行Callable。execute只能执行Runnable(继承Runnable和实现Thread均可)。
2、
submit都会返回Future(如果执行的是Runnable,Future.get()会返回null),execute没有返回值。
代码实现如下:
class MyRunnable implements Runnable{
@Override
public void run() {
//System.out.println("MyRunnable被执行了"+Thread.currentThread());
System.out.println("MyRunnable被执行了");
}
}
class MyThread extends Thread{
@Override
public void run(){
//System.out.println("MyThread被执行"+Thread.currentThread());
System.out.println("MyThread被执行");
}
}
class MyCallable implements Callable<String>{
@Override
public String call() throws Exception {
System.out.println("MyCallable被执行");
Thread.currentThread();
Thread.sleep(200);
return "返回结果";
}
}public class ThreadsTest {
/**
* @param args
*/
public static void main(String[] args) {
ExecutorService executorService1 = Executors.newCachedThreadPool();
MyThread mt = new MyThread();
MyCallable mc = new MyCallable();
MyRunnable mr = new MyRunnable();
//submit
executorService1.submit(mt);
executorService1.submit(mc);
executorService1.submit(mr);
//execute
executorService1.execute(mt);
executorService1.execute(mr);
}
}MyThread被执行
MyCallable被执行
MyThread被执行
MyRunnable被执行了
MyRunnable被执行了
本文通过示例代码详细介绍了Java中ExecutorService接口的submit与execute方法的区别。submit不仅可以执行Runnable和Callable任务,还能返回Future对象以便获取任务状态和结果;而execute仅能执行Runnable任务且无返回值。
1404

被折叠的 条评论
为什么被折叠?



