java多线程之-线程创建方式

来源:互联网 发布:淘宝上有卖迷幻听话水 编辑:程序博客网 时间:2024/05/21 06:52

线程创建的几种方式

  1. 继承Thread类
public class Thread01 extends Thread{    @Override    public void run() {        //耗时任务    }}
  1. 实现Runnable接口
public class Thread02 implements Runnable{    @Override    public void run() {        // 耗时任务    }}
  1. 实现Callable接口
public class Thread03 implements Callable<Integer> {    @Override    public Integer call() throws Exception {//执行线程任务,带返回值        // TODO Auto-generated method stub        return 1;    }}

调用方式:

//1.extends Thread方式        Thread01 thread01 = new Thread01();        thread01.start();        //2.implements Runnable方式        Thread02 thread02 = new Thread02();        new Thread(thread02).start();        //3.implements Callable方式        Thread03 thread = new Thread03();        FutureTask<Integer> task = new FutureTask<Integer>(thread);        new Thread(task).start();        System.out.println(task.get());

对于第三种方式,Future封装了call()的返回值,而FutureTask是Future的实现类,FutureTask通过get方法获取其返回值。

Callable与Runnable的区别

JDK1.5之前,我们主要通过前两种方式实现线程,JDK1.5之后引入了Callable接口的方式,主要是为了解决强两种方式的不足,不管Thread类还是Runnable接口都不能申明检查型异常,其实现方法也没有返回值。Callable跟Runnable差不多,主要区别在于:

  • Callable的实现方法为call().并且带有返回值
  • call()方法可以抛出异常
  • call()返回值由Future对象封装

好了,关于线程的三种创建方式接说到这儿

原创粉丝点击