首页天道酬勤java实例教程,java runnable

java实例教程,java runnable

张世龙 05-05 20:28 93次浏览

在java中,实现线程的方法不仅有runnable接口、Thread类,还有callable接口,但runnable接口和Thread类没有返回值。

然而,callable接口的实现可以返回值;

编写代码时,有两种方法可以检索返回值

具体方法请参阅以下代码

使用FutureTask和线程池完成回调。

分析源代码

首先,在简历线程池中,您可以看到较低级别的实现具有同步队列。 这意味着线程等待在队列中进行

线程创建(如ThreadFactory、线程制造工厂和线程池)与此类有关

由ThreadPoolExecutor导入的软件包

可以看到abstractqueuedSynchronizer aqs、lock锁定和condition条件控制类

接下来,观察线程池如何在低层实现线程的切换和锁定的应用

2.1 runnable和callable的区别

runnable和callable都可以用于创建多线程程序。 区别如下。

实现runnable接口后无法返回结果信息,实现callable接口后有返回值。

runnable接口异常可以实现throws中不能抛出异常,callable接口实现后可以直接抛出Exception异常

2.2什么是future?

使用callable接口实现多线程时,使用FutureTask检索返回值。 Future和FutureTask是什么?

Future是获取异步计算结果的接口,FutureTask是Future的实现类。

公共界面功能{

布尔序列取消(布尔序列互连传输函数;

布尔is cancelled (;

布尔is done (;

V get ) ) throws InterruptedException,ExecutionException;

vget (长时间输出,时间单元单元) )。

throws InterruptedException,ExecutionException,TimeoutException;

}

future接口的源代码很简单,实现了五种方法

boolean cancel (…(booleanmayinterruptrunning ) :如果任务尚未启动,则cancel )…)方法将返回false; 如果任务已经启动,则cancel (执行true方法会尝试停止任务以中断此任务线程的执行,如果停止成功,则返回true。 如果任务已经启动,则执行cancel(false )方法不会影响正在运行的任务线程。 (运行到线程成功完成。 )这种情况下,返回false。 任务完成后,执行cancel(…)方法将返回false。 mayInterruptRunning参数指示是否中断正在运行的线程。

boolean isCanceller () :如果在任务完成之前取消,则返回true。

boolean isDone () )任务执行结束时,正常结束、中途取消或即使发生异常也会返回true。

V get () :获取异步执行的结果。 如果没有结果,则会阻止此方法直到异步计算完成。

长时间输出,时间单元(vget ) :获取异步执行结果,如果没有结果则阻止,但有时间限制,如果阻止时间超过了设置的时间输出时间,则抛出异常。

Future实现了可以中断正在执行的任务、可以判断任务是否还在执行、可以取得任务执行后的结果等功能。 FutureTask是Future接口的常见实现类

调用start和run都可以启动一个线程,线程的六个状态有哪些