java executor框架的应用

我们知道为了实现对线程池的作用,executor对线程的管理采取了一定的措施,使用接口进行操作。所以我们会发现,其实executor框架是有许多不同的接口的,它们分别在不同的执行上发挥相应的作用。下面我们就executor框架组成、框架使用图和实例为大家进行展示。

1.executor框架组成

(1)工作任务:Runnable/Callable 接口

作任务就是Runnable/Callable接口的实现,可以被线程池执行

(2)执行机制:Executor接口、ExecutorService接口、ScheduledExecutorService接口

ThreadPoolExecutor 是最核心的线程池实现,用来执行被提交的任务

ScheduledThreadPoolExecutor 是任务调度的线程池实现,可以在给定的延迟后运行命令,或者定期执行命令(它比Timer更灵活)

ForkJoinPool是一个并发执行框架

(3)异步计算的结果:Future接口

实现Future接口的FutureTask类,代表异步计算的结果

2.Executor框架使用图

/*@paramcorePoolSize*/
/*@parammaximumPoolSize*/
/*@paramkeepAliveTime线程空闲时存活的有效时长*/
/*@paramunit时长单位*/
/*@paramunit时长单位*/
/*@paramworkQueue等待执行的队列*/
/*maximumPoolSize是在workQueue队列满了之后才额外创建的线程数量*/
ThreadPoolExecutortpe=newThreadPoolExecutor(5,10,100,TimeUnit.MILLISECONDS,newArrayBlockingQueue<Runnable>(10));
/*有返回值*/
Callable<String>callable=newCallable<String>(){
publicStringcall()throwsException{
try{
Thread.sleep(5000);
Stringa="returnString";
returna;
}catch(Exceptione){
e.printStackTrace();
return"exception";
}
}
};
Future<String>future=tpe.submit(callable);
/*获取返回值,这是一个同步阻塞式获取的方法*/
future.get();

/*有返回值*/
FutureTask<String>futureTask=newFutureTask<String>(callable);
futureTask.run();

/*无返回值*/
Runnablerunnable=newRunnable(){
publicvoidrun(){
try{
Thread.sleep(5000);
Stringa="returnString";
}catch(Exceptione){
e.printStackTrace();
}
}
};
tpe.execute(runnable);

原文来自:https://www.py.cn

© 版权声明
THE END
喜欢就支持一下吧
点赞9 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容