Android系统:多线程:线程并发:任务、线程、线程池

文章目录

源码分析

任务

两个独立的任务接口

两个接口Runnable和Callable<V>

Runnable接口

用于封装执行任务的代码块

定义run方法,没有返回值

Callable<T>接口

用于封装执行任务的代码块

定义call方法,返回值类型为V

与线程池相关的任务接口/类
Future<V>接口

定义多个方法

定义取消相关方法

boolean cancel(boolean mayInterruptIfRunning)
boolean isCancelled()
boolean isDone()

定义获取任务结果的相关方法

V get() throws InterruptedException, ExecutionException
V get(long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException

RunnableFuture<V>接口

继承Runnable接口和Future<V>接口

FutureTask<V>类

持有一个int变量state和多个相关常量,用于记录任务执行状态

持有一个Callable<V>对象callable和一个Object对象outcome

实现接口RunnableFuture<V>,实现run方法、两个get方法、取消相关方法

实现run方法,在其中调用对象callable的run方法,获取的结果赋值给对象outcome

实现两个get方法,根据任务执行状态,采取不同的操作
1.情况一:任务已完成,挂起线程,返回结果
2.情况二:任务未完成,不做操作

实现取消相关方法实现取消相关方法
1.实现isCanceled方法和isDone方法,根据任务执行状态,返回true或false
2.实现cancel方法,阻塞线程或中断线程

线程

Thread类

持有一个Object对象lock,作为锁

持有一个Runnable对象target

实现接口Runnable,实现run方法,在其中调用持有的Runnable对象target的run方法

线程池

中断相关操作
public void interrupt()

尝试中断线程,根据线程的情况,做不同的操作
第一种情况,中断正在执行的线程, 线程的中断状态变成 true,线程正常运行,并不会停止下来
第二种情况,中断处于 sleep、wait、join状态的线程,线程会抛出异常并中止运行,并且会将中断状态重置为 false

public static native boolean interrupted()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值