首先 我遇到的问题是 接口调用时需要更新缓存 而更新缓存又是个说快不快的过程 所以打算做异步调用 返回我所需要的结果即可 ,至于缓存什么时候更新完 就不是我所需要关注的了

废话不多说 上代码

public class MyExecutor {

private ExecutorService executor = Executors.newCachedThreadPool() ;

public void fun() throws Exception {

executor.submit(new Runnable(){

@override

public void run() {

try {

//要执行的业务代码,我们这里没有写方法,可以让线程休息几秒进行测试

Thread.sleep(10000);

System.out.print("睡够啦~");

}catch(Exception e) {

throw new RuntimeException("报错啦!!");

}

}

});

}

}

public class Demo{

public static void main(String[] args) {

MyExecutor  myExecutor = new MyExecutor();

try {

myExecutor.fun();

System.our.print("你先睡着,我先回家啦~");

}catch(Exception e) {

throw new RuntimeException("业务程序报错啦!!");

}

}

}

好啦 代码到此结束 (ps:纯手打 若有错 请见谅)

运行主方法

会先打印(你先睡着,我先回家啦~)

然后(睡够啦~)

也就是说 在需要异步执行的方法未执行完毕时 主程序已经返回结果了  不需要继续等待 这样可以保证程序先返回结果 再继续执行不需要等待的繁琐的任务  当然也可以加一些方法去判断异步方法是否执行完毕。

说一下Executors类

这个类是用来创建线程池的

有这么几个方法

1、newFixedThreadPool() 创建固定大小的线程池 线程池的大小一旦达到最大值就会保持不变,如果某个线程因为执行异常而结束,那么线程池会补充一个新线程

2、newCachedThreadPool() 创建一个可缓存的线程池,如果线程池的大小超过了处理任务所需要的线程,那么就会回收部分空闲(60s不执行任务)的线程,当任务数量增加时,此线程池又可以智能的添加新线程来处理任务。此线程池不会对线程池大小做限制,线程池大小完全依赖于系统(JVM)能够创建的最大线程大小

3、newSingleThreadExecutor() 创建一个单线程的线程池。这个线程池只有线程在工作,也就是相当于单线程串行执行所有任务。如果这个唯一的线程因为异常结束,那么会有一个新的线程来替代它。此线程池保证所有任务的执行顺序按照任务的提交顺序执行

4、newScheduledThreadPool() 创建一个大小无限的线程池,此线程池支持定时以及周期性执行任务的需求

5、newSingleThreadScheduledExecutor() 创建一个单线程的线程池。此线程池支持定时以及周期性执行任务的需求
---------------------
作者:LittleYoungMan
来源:CSDN
原文:https://blog.csdn.net/java_ying/article/details/79803470
版权声明:本文为博主原创文章,转载请附上博文链接!

最新文章

  1. Qt 二维码
  2. Socket.IO聊天室~简单实用
  3. mac系统下mysql开机启动总是3307
  4. clientX、pageX、scrollLeft、offsetLeft、clientWidth、screen.width的用法和区别
  5. .NET Framework源码查看及下载
  6. Uva 839 Not so Mobile
  7. android测试参考,及CreateProcess failure, error问题解决
  8. 一些C++内容的总结(2013.10.17)
  9. Qt5 多显示器获取不同显示器的分辨率和位置的方法
  10. [Swust OJ 465]--吴奶奶买鱼(0-1背包+dfs)
  11. 物联网操作系统HelloX开发人员入门指南
  12. Web Worker在WebKit中的实现机制
  13. MongoDB安装心得
  14. 【转】Linux目录下/dev/shm的理解和使用
  15. echarts教程-asp.net+ashx实现堆积柱状
  16. 常见JS倒计时
  17. sprinmvc与 Struct2框架的区别
  18. Java I/O - 对象的输入输出与序列化
  19. python网络编程初识
  20. Linux - 7种运行级别

热门文章

  1. 21备忘录模式Memento
  2. java.lang.ClassCastException:weblogic.xml.jaxp.RegistryDocumentBuilderFactory cannot be cast to javax.xml.parsers.DocumentBuilderFactory
  3. 【PostgreSQL】资料索引(来源:德哥)
  4. GCH实践经验
  5. solr搜索分词优化
  6. git 创建新分支并推送到远程分支
  7. python 写入Excel
  8. STL之pair对组
  9. ERP项目实施记录09
  10. phpredis中文开发文档