开发者社区> 问答> 正文

java Executor类的注释部分什么意思?

蛮大人123 2016-03-10 15:05:25 936
许多 Executor 实现都对调度任务的方式和时间强加了某种限制。以下执行程序使任务提交与第二个执行程序保持连续,这说明了一个复合执行程序。
 class SerialExecutor implements Executor {
     final Queue<Runnable> tasks = new LinkedBlockingQueue<Runnable>();
     final Executor executor;
     Runnable active;

     SerialExecutor(Executor executor) {
         this.executor = executor;
     }

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

     protected synchronized void scheduleNext() {
         if ((active = tasks.poll()) != null) {
             executor.execute(active);
         }
     }
 }

没看明白, 这个在外面该如何使用呢? 构造参数Executor是干什么的, 怎么连续的提交任务?

Java 调度
分享到
取消 提交回答
全部回答(1)
  • 蛮大人123
    2019-07-17 18:57:43

    关于 Executor 可以参考 java并发编程-Executor框架。SerialExecutor 的作用是使用指定的(通过构建函数传入)Executor 对象,顺序的执行任务(通过 execute() 方法实现)

    SerialExectuor.execute() 会把传入的 Runnable 放在队列里,然后按顺序执行,如果队列为空(初始或已经执行完),会立即启动传入的 Runnable 对象,用法大概就像这样

    SerialExecutor sExecutor = new SerialExecutor(sourceExecutor);
    sExecutor.execute(task1);
    sExecutor.execute(task2);
    sExecutor.execute(task3);
    // ...
    0 0

集结各类场景实战经验,助你开发运维畅行无忧

推荐文章
相似问题