首页 理论教育 Java多线程实现Callable接口

Java多线程实现Callable接口

时间:2023-11-16 理论教育 版权反馈
【摘要】:通过Thread 类和Runnable 接口实现多线程时,需要重写run()方法,但是由于该方法没有返回值,因此无法从多个线程中获取返回结果。为了解决这个问题,从JDK 5 开始,Java提供了一个新的Callable 接口,来满足这种既能创建多线程又可以有返回值的需求。图11.4FutureTask 继承关系Callable 接口方式实现的多线程是通过FutureTask 类来封装和管理返回结果的,该类的直接父接口是RunnableFuture。

Java多线程实现Callable接口

通过Thread 类和Runnable 接口实现线程时,需要重写run()方法,但是由于该方法没有返回值,因此无法从多个线程中获取返回结果。为了解决这个问题,从JDK 5 开始,Java提供了一个新的Callable 接口,来满足这种既能创建多线程又可以有返回值的需求。

Callable 接口实现多线程是通过Thread 类的有参构造方法传入Runnable 接口类型的参数来实现多线程,不同的是,这里传入的是Runnable 接口的子类FutureTask 对象作为参数,而FutureTask 对象中则封装带有返回值的Callable 接口实现类。

步骤:

(1)创建一个Callable 接口的实现类,同时重写Callable 接口的call()方法;

(2)创建Callable 接口的实现类对象;

(3)通过FutureTask 线程结果处理类的有参构造方法来封装Callable 接口实现类对象;

(4)使用参数为FutureTask 类对象的Thread 有参构造方法创建Thread 线程实例;

(5)调用线程实例的start()方法启动线程。

FutureTask 继承关系如图11.4 所示。(www.xing528.com)

图11.4 FutureTask 继承关系

Callable 接口方式实现的多线程是通过FutureTask 类来封装和管理返回结果的,该类的直接父接口是RunnableFuture。

FutureTask 本质是Runnable 接口和Future 接口的实现类,而Future 则是JDK 5 提供的用来管理线程执行返回结果的。

Future 接口方法如表11-1 所示。

表11-1 Future 接口方法

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈