Java 实现异步调用

Java 实现异步调用首先我遇到的问题是接口调用时需要更新缓存而更新缓存又是个说快不快的过程所以打算做异步调用返回我所需要的结果即可,至于缓存什么时候更新完就不是我所需要关注的了废话不多说上代码publicclassMyExecutor{  privateExecutorServiceexecutor=Executors.newCachedThreadPool();  publi…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

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

废话不多说 上代码

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() 创建一个单线程的线程池。此线程池支持定时以及周期性执行任务的需求

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/157684.html原文链接:https://javaforall.net

(0)
上一篇 2022年7月27日 下午3:16
下一篇 2022年7月27日 下午3:36


相关推荐

  • Postman汉化版本竟如此简单,全中文真香「建议收藏」

    Postman汉化版本竟如此简单,全中文真香「建议收藏」因此可以使用Apifox替代postman完成日常的接口调试工作。Apifoxsaas版本完全免费,

    2026年4月19日
    6
  • 2021年最新Java学习路线图指南

    2021年最新Java学习路线图指南Java在编程语言排行榜中一直牢牢占据榜首位置,几乎所有的大中型互联网的应用系统在服务器端开发首选都是Java编程,正因如何吸引这不少年轻人投入该行业,Java虽不想其它编程语言那么复杂,但是知识体系还是很庞大的,因此想要学好并非容易之事,不少想要跨入Java编程行业的同学们通过网络搜索各式各样的学习资料,却往往缺乏系统而全面的学习路线。动力节点深知同学们的学习困难,为此整理了一套最新的2021年新版学习路线图,增加了目前企业最新应用技术,这套学习路线图,只要你完成一半基本就可以找到很不错的…

    2022年5月17日
    44
  • linux修改密码永久有效[通俗易懂]

    linux修改密码永久有效[通俗易懂]password-X99999用户名称passwd用户名称

    2025年9月17日
    7
  • WES7下载_影音先锋下载

    WES7下载_影音先锋下载WES7(WindowsEmbeddedStandard7)是微软在2010年5月13日发布的基于X86平台,Windows7组件化的嵌入式操作系统。WES7除了具有Windows7最新的功能外,还具

    2022年8月1日
    9
  • 采用虚拟存储技术_虚拟存储管理

    采用虚拟存储技术_虚拟存储管理虚拟存储技术(VIRTUALMEMORY)所谓的虚拟存储技术是指:当进程运行时,先将其一部分装入内存,另一部分暂留在磁盘,当要执行的指令或访问的数据不存在内存中时,由操作系统自动完成将它们从磁盘调入内存的工作。虚拟地址空间—–分配给进程的虚拟内存虚拟地址—–在虚拟内存中指令或数据的位置,该位置可以被访问,仿佛它是内存的一部分。

    2026年4月13日
    5
  • [Math] 二阶行列式和三阶行列式的几何意义的证明

    [Math] 二阶行列式和三阶行列式的几何意义的证明证明 二阶行列式和三阶行列式的几何意义的证明今天突发奇想去复习线性代数 主要是看数值分析发现自己线代忘得差不多了 然后就突然看见一句话 说是二阶行列式的几何意义就是其平行四边形的面积 三阶行列式的几何意义是其立方体的体积 尝试证明二阶行列式直观证明如图可见 由于平行四边形的定义 面积由底边和底边所对应的高决定 因此在下图平移过程中 蓝色和灰色的平行四边形的面积适中保持不变的 移动到合适位置时 可以显而易见的看到以 a b 和 c d 为边的平行四边形是以 a 0 和 0 d 为底边的长方

    2026年3月20日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号