当前位置 : 主页 > 手机开发 > 其它 >

通过实现Callable接口创建Thread的巧妙思想

来源:互联网 收集:自由互联 发布时间:2021-06-19
一、如何创建一个线程? 1、继承Thread类 2、实现Runnable接口 可是问题来了,Thread有传Runnable接口的,却没有传Callable接口的: 那我怎么才能使用Callable创建线程呢? 二、接口实现的思想

一、如何创建一个线程?

  1、继承Thread类

  2、实现Runnable接口

  可是问题来了,Thread有传Runnable接口的,却没有传Callable接口的:

 

  那我怎么才能使用Callable创建线程呢?

二、接口实现的思想

  我们知道,一个类可以实现多个接口,在给方法传参的时候,可以传入参数类型的子类,例如:

  interface Animal

  interface Pet

  class Cat implement Animal , Pet

  那么就可以使用public void A(Cat cat){} 代替public void B(Animal animal){} 和public void C( Pet pet ){}。

  回到刚才的问题,如何传入一个Callable类型的接口创建线程呢?你可能在想,既然他只有接收Runnable接口的构造器,那么能不能设计一个类既实现Runnable又实现Callable接口呢?那我往构造器里传就不能说我语法错误了呀。

  就是这么干的!当你打开JDK,查看Runnable接口时,会发现Runnable有子接口RunnableFuture:

  而子接口有实现类FutureTask:

  而此类拥有构造器:

三、案例实施

public class CallableTest {
    public static void main(String[] args) {
        FutureTask futureTask = new FutureTask(new MyThread());
        new Thread(futureTask,"A").start();
    }
}
class MyThread implements Callable {
    @Override
    public Integer call() throws Exception {
        System.out.println("come in ");
        return 12345;
    }
}
上一篇:继承与派生
下一篇:新概念每日一课 006
网友评论