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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • php函数基础(一)

    php函数基础(一)

    2021年10月31日
    41
  • 使用google earth engine(GEE)提取2000年到2019年长江下游水体(河流、湖泊)数据[通俗易懂]

    使用google earth engine(GEE)提取2000年到2019年长江下游水体(河流、湖泊)数据[通俗易懂]我最近想通过GEE直接统计长时间序列下长江下游流域的水体面积变化情况,如果通过传统做法很复杂,于是想到了使用GEE。下面是提取水体的效果图,时间是2000年的,你也可以设置显示2000-2019年中任意一年的水体数据。代码链接:https://code.earthengine.google.com/2440b9511ba0c1cefaf926c7c47e5ea2读者可以先通过代码看看效果,下面我说一下最主要的思路:1.数据源的选择;2.数据的时间、地点筛选;3.水体的标准设置;4

    2025年12月2日
    5
  • rj45网络接口线序_rj11接口定义4芯线序

    rj45网络接口线序_rj11接口定义4芯线序RJ45接口定义常见的RJ45接口有两类:用于以太网网卡、路由器以太网接口等的DTE类型,还有用于交换机等的DCE类型。DTE我们可以称做“数据终端设备”,DCE我们可以称做“数据通信设备”。从某种意义来说,DTE设备称为“主动通信设备”,DCE设备称为“被动通信设备”。当两个类型一样的设备使用RJ45接口连接通信时,必须使用交叉线连接。这个可以从如下的RJ45DTE类型引脚定义和RJ4

    2025年12月15日
    6
  • Javaweb实现旅游管理系统(商城项目)(一)

    Javaweb实现旅游管理系统(商城项目)(一)一.选题的意义及选题内容概述随着信息资源的逐步网络化,信息消费者将被笼罩在巨大的信息网络之中,并由此而具备充分的获取信息的能力。此时,消费者对信息的需求将更具针对性,更为个性化。因此,网络信息服务具有传统信息服务所不具备的双向性,消费者能够更多地参与信息服务的过程,从而加速个性化服务时代的到来。锻炼自己的操作能力,将大学理论课程的学习转化为动手能力提高的基础。通过本系统,用户可以方便查询旅

    2022年6月6日
    108
  • ideaIU-2021.5.4激活码(最新序列号破解)

    ideaIU-2021.5.4激活码(最新序列号破解),https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月20日
    264
  • 十大免费代理ip软件_国内静态ip代理软件

    十大免费代理ip软件_国内静态ip代理软件如今,随着网络的快速发展,很多的人对代理IP都已经有了很深入的了解,那么有很多的朋友在使用代理IP的时候也会遇到各种各样的问题,下面就带大家来详细了解下代理IP的使用技巧。1、直接使用代理IP打开Internet选项,通过对局域网的设置来选择LAN代理服务器,其次填写相对应的端口号以及ip地址,填写好之后就可以保存刷新浏览器IP就变更好了,使用这种方法能够解决网站的ip地址限制问题,适合效果补量的业务。2、代理IP的并发不宜过大在使用代理IP时,无论代理IP有没有并发的限制,单个的IP都不能过大.

    2022年4月20日
    903

发表回复

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

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