线程的三种创建方式

来源:互联网 发布:南方电网面试 知乎 编辑:程序博客网 时间:2024/05/17 08:21
public class Web12306 {public static void main(String[] args) throws InterruptedException, ExecutionException {// 方式 1  继承Thread类,重写run方法ThreadTest01 test01  = new ThreadTest01();test01.start();// 方式2 实现Runnable接口,重写run方法 使用静态代理调用线程ThreadTest02 test02  = new ThreadTest02();Thread thread  = new Thread(test02);thread.start();// 方式3 实现Callable接口,重写call方法ExecutorService service = Executors.newFixedThreadPool(1);ThreadTest03 test03 = new ThreadTest03();Future<Integer> result = service.submit(test03);//System.out.println(result);  返回的是 java.util.concurrent.FutureTask@154174f9Integer num=0;num =result.get();System.out.println(num);service.shutdown();}}// 多线程的三种方式class ThreadTest01 extends Thread{@Overridepublic void run() {for(int i =0;i<20;i++){System.out.println("ThreadTest01");}}}class ThreadTest02 implements Runnable{@Overridepublic void run() {for(int i =0;i<20;i++){System.out.println("ThreadTest02");}}}class ThreadTest03 implements Callable<Integer>{Integer in = 10;@Overridepublic Integer call() throws Exception {for(int i =0;i<100;i++){System.out.println("ThreadTest03");/*if(i==20){System.out.println(in);return this.in;*/}//}return in;}}

优缺点比较:

继承Thread类:不利于再继承其他类;

实现Runnable接口:没有返回值,不能抛出异常;优点,可以使用多个代理代理同一个对象。

实现Callable接口:代码略繁琐。优点有返回值


原创粉丝点击