android多线程顺序执行命令,Android AsyncTask中的坑之线程顺序执行

如果你是一个android coder ,那么首先要具备,怀疑精神,其次要看源码啊看源码(一下问题针对api19源码)

我要实现一个定时任务,方法很多,我想用AsyncTask,看起来很简单

AsyncTask中可以执行的任务数是根据cpu的个数来做限定的CPU_COUNT * 2 + 1;

AsyncTask的调用执行有三个方法

1.public final AsyncTaskexecute(Params... params) 、2.public final AsyncTaskexecuteOnExecutor(Executor exec,

Params... params)、3.public static void execute(Runnable runnable) 具体的使用看一下定义就知道,1,2中要实例化,3是类方法

1,3都是调用的顺序执行(顺序执行就是你调用的任务要顺序执行的),如果上一次任务没有结束,会排队等待。。

2.的结果就是最大可以产生CPU_COUNT * 2 + 1个线程,他们会并发,但是如果超出了,那么也会等待(待考证)

那么有没有其他方法呢,有的public final boolean cancel(boolean mayInterruptIfRunning)可以调用线程的interrupt方法,

更确切的说,如果线程被Object.wait, Thread.join和Thread.sleep三种方法之一阻塞,那么,它将接收到一个中断异常(InterruptedException),从而提早地终结被阻塞状态。

然后就会

private void finish(Result result) {

if (isCancelled()) {

onCancelled(result);

} else {

onPostExecute(result);

}

mStatus = Status.FINISHED;

}

这句话的意思是如果取消了就不会执行onPostExecute方法了,而是执行另外的onCancelled方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值