java编程executor框架_Java并发编程 - Executor框架(一)Executor,

1、并发编程的一种编程方式是把任务拆分为一些列的小任务,即Runnable,然后将这些任务提交给一个Executor执行, Executor.execute(Runnalbe) 。Executor在执行时使用其内部的线程池来完成操作。

Executor的子接口有:ExecutorService,ScheduledExecutorService,已知实现类:AbstractExecutorService,ScheduledThreadPoolExecutor,ThreadPoolExecutor。

2、Executor属于public类型的接口。可以用于提交,管理或者执行Runnable任务。实现Executor接口的class还可以控制Runnable任务执行线程的具体细节。包括线程使用的细节、调度等。一般来说,Runnable任务开辟在新线程中的使用方法为:new Thread(new (RunnableTask())).start()

3、但在Executor中,可以使用Executor而不用显示地创建线程。例如,可以使用以下方法创建线程,而不是像第2点中为一种任务中的每个任务都调用new Thread(...)的方法。

Exectuor executor = anExecutor();executor.execute(new RunnableTask()); // 异步执行executor.execute(new RunnableTask());

4、但是,Executor接口并没有严格地要求执行必须是异步/同步的,一切都相当自由。在最简单的情况下,执行程序可以在调用者的线程中立即运行已提交的任务,

class DirectExecutor implements Executor { public void execute(Runnable r) {r.run(); }}

更常见的是,任务在某个不是调用者线程的线程中执行的。如在另一个线程中启动:

class ThreadPerTaskExecutor implements Executor { public void execute(Runnable r) {new Thread(r).start();}}

也可以在实现中用另一个Executor来序列化执行过程:

class SerialExecutor implements Executor {final Queue tasks = new ArrayDeque();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);}}}

5、ThreadPoolExecutor类提供了一个可供可扩展的线程池实现。Executors类为Executor接口及其实现提供了便捷的工厂方法。

6、 Executor中的方法execute。void execute(Runnable command)表示在未来的某个时间执行给定的命令。该命令可能在新的线程、已经入池的线程或者正在调用的线程中执行。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值