当前位置: 首页 > news >正文

有没有做底单的网站小程序微信

有没有做底单的网站,小程序微信,贵州营销型网站,网站建设主要工作内容Spring提供了两种后台任务的方法,分别是: 调度任务#xff0c;Schedule异步任务#xff0c;Async当然#xff0c;使用这两个是有条件的#xff0c;需要在spring应用的上下文中声明task:annotation-driven/当然#xff0c;如果我们是基于java配置的#xff0c;需要…Spring提供了两种后台任务的方法,分别是: 调度任务Schedule异步任务Async当然使用这两个是有条件的需要在spring应用的上下文中声明task:annotation-driven/当然如果我们是基于java配置的需要在配置哪里加多EnableScheduling和EnableAsync 就像下面这样 1 2 3 4 5 6 EnableScheduling EnableAsync public class WebAppConfig { .... 除此之外还是有第三方库可以调用的例如Quartz. Schedule 先看下Schedule怎么调用再说 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 public final static long ONE_DAY  24 * 60 * 60 * 1000; public final static long ONE_HOUR  60 * 60 * 1000; Scheduled(fixedRate ONE_DAY) public void scheduledTask() { System.out.println( 我是一个每隔一天就会执行一次的调度任务); } Scheduled(fixedDelay ONE_HOURS) public void scheduleTask2() { System.out.println( 我是一个执行完后隔一小时就会执行的任务); } Scheduled(initialDelay1000, fixedRate5000) public void doSomething() { // something that should execute periodically } Scheduled(cron  0 0/1 * * * ? ) public void ScheduledTask3() { System.out.println( 我是一个每隔一分钟就就会执行的任务); } 需要注意的 关于最后一个在指定时间执行的任务里面使用的是Cron表达式同时我们看到了两个不一样的面孔fixedDelay fixedRate前者fixedDelay表示在指定间隔运行程序例如这个程序在今晚九点运行程序跑完这个方法后的一个小时就会再执行一次而后者fixedDelay者是指这个函数每隔一段时间就会被调用我们这里设置的是一天不管再次调度的时候这个方法是在运行还是结束了。而前者就要求是函数运行结束后开始计时的这就是两者区别。 这个还有一个initialDelay的参数是第一次调用前需要等待的时间这里表示被调用后的推迟一秒再执行这适合一些特殊的情况。 我们在serviceImpl类写这些调度任务时候也需要在这些我们定义的serviceInterface的借口中写多这个接口要不然会爆 but not found in any interface(s) for bean JDK proxy.Either pull the method up to an interface or Async 有时候我们会调用一些特殊的任务任务会比较耗时重要的是我们不管他返回的后果。这时候我们就需要用这类的异步任务啦调用后就让他去跑不堵塞主线程我们继续干别的。代码像下面这样: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 public void AsyncTask(){ Async public void doSomeHeavyBackgroundTask(int sleepTime) { try { Thread.sleep(sleepTime); } catch (InterruptedException e) { e.printStackTrace(); } } Async public FutureString doSomeHeavyBackgroundTask() { try { Thread.sleep(3000); } catch (InterruptedException e) { e.printStackTrace(); } return null; } public void printLog() { System.out.println( i print a log ,time System.currentTimeMillis()); } } 我们写个简单的测试类来测试下 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 RunWith(SpringJUnit4ClassRunner.class) WebAppConfiguration ContextConfiguration(classes AsycnTaskConfig.class) //要声明EnableASync public class AsyncTaskTest { Autowired AsyncTask asyncTask; Test public void AsyncTaskTest() throws InterruptedException { if (asyncTask ! null) { asyncTask.doSomeHeavyBackgroundTask(4000); asyncTask.printLog(); Thread.sleep(5000); } } } 这感觉比我们手动开多一个线程方便多了不想异步的话直接把Async去掉就可以了另外如果你想要返回个结果的这需要加多个Future,关于这个Future完全可以写多几篇文章介绍顺便把FutureTask介绍了。如果想修改Spring boot的默认线程池配置可以实现AsyncConfigurer.需要注意的 相对于scheduled这个可以有参数和返回个结果因为这个是我们调用的而调度的任务是spring调用的。异步方法不能内部调用只能像上面那样外部调用否则就会变成阻塞主线程的同步任务啦这个坑我居然跳下去了例如下面这样的。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 public void AsyncTask(){ public void fakeAsyncTaskTest(){ doSomeHeavyBackgroundTask(4000); printLog(); //你会发现当你像这样内部调用的时候居然是同步执行的不是异步的 } Async public void doSomeHeavyBackgroundTask(int sleepTime) { try { Thread.sleep(sleepTime); } catch (InterruptedException e) { e.printStackTrace(); } } public void printLog() { System.out.println( i print a log ); } } 另外一点就是不要重复的扫描这也会导致异步无效具体的可以看这个stackoveflow的spring-async-not-working Issue。关于异常处理难免在这个异步执行过程中有异常发生对于这个问题spring提供的解决方案如下,实现 AsyncUncaughtExceptionHandler接口。 1 2 3 4 5 6 7 8 9 10 11 public class MyAsyncUncaughtExceptionHandler implements AsyncUncaughtExceptionHandler { Override public void handleUncaughtException(Throwable ex, Method method, Object... params) { // handle exception } } 写好我们的异常处理后我们需要配置一下告诉spring这个异常处理就是我们在运行异步任务时候抛出错误时的异常终结者 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 Configuration EnableAsync public class AsyncConfig implements AsyncConfigurer { Bean public AsyncTask asyncBean() { return new AsyncTask(); } Override public Executor getAsyncExecutor() { ThreadPoolTaskExecutor executor  new ThreadPoolTaskExecutor(); executor.setCorePoolSize(7); executor.setMaxPoolSize(42); executor.setQueueCapacity(11); executor.setThreadNamePrefix(MyExecutor-); executor.initialize(); return executor; } Override public AsyncUncaughtExceptionHandler getAsyncUncaughtExceptionHandler() { return new MyAsyncUncaughtExceptionHandler(); } } Quartz登场 处理这两个外还有一个和spring整合的第三方库叫Quartz看了下官网的使用简介也是挺逗的现在都习惯用mavengradle之类来关系这些依赖了他还叫人下载也是不知为何详情点击http://quartz-scheduler.org/documentation/quartz-2.2.x/quick-start估计有可能是因为没再维护了的原因吧看了下最新版2.2居然是Sep, 2013更新的…居然是停更的不过Quartz作为一个企业级应用的任务调度框架还是一个可以的候选项目的。这里不铺开讲有兴趣就去官网看下吧。整体用起来感觉是没有spring自己的后台任务方便不过也可以接受只需要简单的配置就可以使用了。 http://www.cnblogs.com/slimer/p/6401394.html  转载于:https://www.cnblogs.com/softidea/p/6855034.html
http://www.zqtcl.cn/news/780465/

相关文章:

  • 资阳房地产网站建设学校网站建设板块分析
  • 山东华邦建设网站首页wordpress h5自适应
  • 合肥市建设工程劳务分包合同备案表在哪个网站下载国际国内热点新闻事件
  • 临猗做网站怎么做挣钱的网站
  • 做软装找图片的网站wordpress 表单留言
  • 360网站挂马检测wordpress路径爆出
  • 有什么网站学做标书的专门做短视频的公司
  • 网站怎么做图片动态图片短视频推广
  • 海口的网站建设网页设计欣赏可爱风格
  • 高端网站设计哪个好五莲网站建设维护推广
  • 外贸网站 测速国内创意网页设计
  • 网站商城前台模板免费下载自己做网站统计
  • 十大免费货源网站免费版本厦门建网站多少钱
  • 网站建设投标书范本深圳网页设计培训多少钱
  • 动态ip可以做网站北京万户网络
  • 网址大全免费网站中国建设银行驻莫斯科网站
  • 网站建设 教材 推荐网站导入
  • 网站备案扫描智能软件开发就业前景
  • 快速网站建设费用口碑营销图片
  • wordpress地址和站点地址错天津seo诊断
  • 张云网站建设做谷歌推广比较好的公司
  • 电子商务网站建设与管理的论文题目智能自助建站系统源码
  • 个人网站建设价格网站做视频转流量
  • 点网站出图片怎么做深圳市中心在哪
  • 企业网站建设58同城网站优化排名软件哪些最好
  • 最专业企业营销型网站建设企业宣传海报设计制作
  • 石家庄建站公司软件开发岗位介绍
  • 网站开发知识视频教程公司网站总感觉少点什么找什么人做
  • 做网站ps建立多大的画布网站排名监控工具
  • 烟台网站开发网站建设横幅标语