java ScheduledExecutorService,spring schedule 多线程
00-1010序java多线程应用场景应用场景1:应用场景ScheduledExecutorService方法介绍示例示例结果
目录
java开发,或多或少会接触到多线程的应用开发场景。博主以前做多线程有两种方式,一种是继承Thread,一种是实现Runnable接口。不过用的最多的还是实现Runnable接口,因为实现Runnable接口可以共享多线程资源!还有Java。util。并发。ScheduleDexecutorService接口将大大简化多线程应用程序的开发!还能轻松解决任务常规执行的问题!
前言
做过10-1010的微信开发的人都知道,微信的令牌是有有效期的,每天领取令牌是有限额的。你不可能每次需要的时候都去领一次,只能在快过期的时候再去领一次。这个时候我们可以为这个获取令牌的操作单独启动一个线程,线程会休眠一段时间,每次之后继续获取,这样就保证了令牌永远有效!
00-1010也是微信发展中的问题。当微信服务器连接到我们的服务器时,必须在五秒内响应结果,否则微信会直接提示用户服务不可用。而且我们也不可能五秒内办完所有业务,回复微信服务器。比如从微信服务器下载用户提交的文件并保存在我们自己的文件服务器上(微信服务器临时保存用户文件),上传下载文件都是比较耗时的操作。我们当然不能等文件上传完再去响应微信,所以要单独启动一个线程来下载和上传文件。
00-1010/* * *在指定的延迟时间后执行任务* @param命令的线程任务Runnable无法返回执行结果* @param delay指定某个时间执行* @param unit指定时间单位* @ return */public scheduled future schedule(Runnable command,long delay,time unit unit){ return null;}/* * *指定执行任务的延迟时间* @ param Callable thread task executed Callable返回执行结果* @param delay指定某个时间执行* @param unit指定时间单位* @ param * @ return */publicScheduledFutureschedule(Callable Callable,long delay,time unit unit){ return null;}/* * *等待initiaDelay时间后,每周期执行一次time * @ param command * @ param initial delay * @ param period * @ param unit * @ return */public ScheduledFuture scheduleAtFixedRate(Runnable command,long initialDelay,long period,time unit unit){ return null;} //scheduleWithFixedDelay和scheduleAtFixedRate类似于public scheduled future scheduleWithFixedDelay(runnable命令,长初始延迟,长延迟,时间单位单位单位){ return null}
java多线程的应用场景
/* * * * @作者KL by 2016/5/14 * @ boke www . kailing . pub */public class Test { public static int count=0;public static void main(string[]args){//初始化两行城市的任务调度服务scheduleexecutorservice executorservice=executors . newscheduledthreadpool(2);//Task 1:0秒后开始执行,之后每秒执行一次(最终预定future test1=executorservice。scheduleatfixedrate(new runnable(){ public void run(){ system . out . println(执行第一个任务(count) time thread . current thread()));} },0,1,时间单位。秒);//Task 2:6秒后开始执行,返回执行结果Final Scheduled Future Test 2=executorservice . schedule(new callable(){ public object call(){ system . out . println( Task 2执行,将执行结果传递给Task 3 thread . current thread()));返回‘任务2已完成,请知悉!’;} },6,时间单位。秒);//任务3:8秒后执行,打印任务2的结果,终止任务1 executorservice . schedule(new runnable(){ public void run(){ try { system . out . println(test 2 . get()));} catch(Exception e){ e . printstacktrace();} System.out.println(任务三执行,任务一终止 thread . current thread());test1.cancel(真);} },8,时间单位。秒);System.out.println(我是第一个执行的吗?不一定,虽然我是主线程‘thread . current thread());} }}ps:因为任务三涉及到任务二的执行结果,所以即使任务三的执行时间设置在任务二的执行之前,任务三也是在任务二的执行结束之后才能执行的。可以修改执行时间自己测试一下,体验一下。
应用场景一:
这就是java多线程开发scheduleexecutorservice的简化方法的细节。更多关于java多线程开发scheduleexecutorservice的简化方法,请关注大众IT的其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。