美文网首页
串行执行任务:SerialExecutor

串行执行任务:SerialExecutor

作者: linheimx | 来源:发表于2016-10-01 09:04 被阅读108次

串行

任务依次执行,跟糖葫芦一样。

1. 执行器

go
@TargetApi(11)
    private static class SerialExecutor implements Executor {
        final ArrayDeque<Runnable> mTasks = new ArrayDeque<Runnable>();
        Runnable mActive;

        public synchronized void execute(final Runnable r) {
            mTasks.offer(new Runnable() {
                public void run() {
                    try {
                        r.run();
                    } finally {
                        scheduleNext();
                    }
                }
            });
            if (mActive == null) {
                scheduleNext();
            }
        }

        protected synchronized void scheduleNext() {
            if ((mActive = mTasks.poll()) != null) {
                THREAD_POOL_EXECUTOR.execute(mActive);
            }
        }
    }

2.线程执行器

public static final Executor THREAD_POOL_EXECUTOR
            = new ThreadPoolExecutor(CORE_POOL_SIZE, MAXIMUM_POOL_SIZE, KEEP_ALIVE,
            TimeUnit.SECONDS, sPoolWorkQueue, sThreadFactory,
            new ThreadPoolExecutor.DiscardOldestPolicy());
  1. CORE_POOL_SIZE = 5;
  2. MAXIMUM_POOL_SIZE = 128;
  3. KEEP_ALIVE = 1;
  4. sPoolWorkQueue:
private static final BlockingQueue<Runnable> sPoolWorkQueue =        new LinkedBlockingQueue<Runnable>(10);
  1. sThreadFactory
 private static final ThreadFactory  sThreadFactory = new ThreadFactory() {
        private final AtomicInteger mCount = new AtomicInteger(1);

        public Thread newThread(Runnable r) {
            return new Thread(r, "AsyncTask #" + mCount.getAndIncrement());
        }
    };

相关文章

  • 串行执行任务:SerialExecutor

    串行 任务依次执行,跟糖葫芦一样。 1. 执行器 2.线程执行器 CORE_POOL_SIZE = 5; MAXI...

  • iOSIN-GCD

    队列和同步异步 区别并行队列串行队列主队列同步(sync)没有开启新线程,串行执行任务没有开启新线程,串行执行任务...

  • 关于串并行

    串行执行任务队列items 并行执行任务队列items 串行与并行的结合,即每次设定最多能并行n个异步任务

  • iOS学习笔记_GCD的基本使用

    1、 异步函数+并发队列:开启多条线程,并发执行任务2、 异步函数+串行队列:开启一条线程,串行执行任务3、...

  • GCD各种情况整理

    01 异步函数+并发队列:开启多条线程,并发执行任务02 异步函数+串行队列:开启一条线程,串行执行任务03 同步...

  • GCD:串行/并行/主队列下,同步/异步的执行方式

    GCD中获取各种类型的队列: 串行队列异步执行任务 异步具有创建新线程的能力,会开辟新线程去执行任务; 按照串行的...

  • 队列 同步  异步

    区别 并发队列 串行队列 主队列同步(sync) 没有开启新线程,串行执行任务 没有开启新线...

  • GCD小总结

    单例模式 串行队列同步/异步执行任务 并发队列同步/异步执行任务 队列组 延时执行 barrier

  • iOS GCD笔记

    串行队列 并发队列 主队列 全局并发队列 同步执行 异步执行 同步+并发队列 = 没有开启新线程,串行执行任务 s...

  • GCD学习总结

    GCD容易混淆的概念 任务,同步,异步 ,串行队列,并发队列 任务就是要做的事情 同步和异步是用来执行任务的 串行...

网友评论

      本文标题:串行执行任务:SerialExecutor

      本文链接:https://www.haomeiwen.com/subject/tfuryttx.html