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


相关推荐

  • CAS单点登录原理解析

    CAS单点登录原理解析推荐阅读1.SpringBoot整合篇2.手写一套迷你版HTTP服务器3.记住:永远不要在MySQL中使用UTF-84.Springboot启动原理解析1、基于Cookie的单点登录的回顾基于Cookie的单点登录核心原理:将用户名密码加密之后存于Cookie中,之后访问网站时在过滤器(filter)中校验用户权限,如果没有权限则从Cookie中取出用户名…

    2022年6月7日
    32
  • python构造方法的作用_python中类的作用

    python构造方法的作用_python中类的作用1.构造函数的作用构造函数主要用来在创建对象时完成对对象属性的一些初始化等操作,当创建对象时,对象会自动调用它的构造函数。一般来说,构造函数有以下三个方面的作用:■给创建的对象建立一个标识符;■为对象数据成员开辟内存空间;■完成对象数据成员的初始化。2.默认构造函数当用户没有显式的去定义构造函数时,编译器会为类生成一个默认的构造函数,称为”默认构造函数”,默认构造函数不能完成…

    2025年10月9日
    4
  • Python绘制地图神器folium介绍及安装使用教程

    Python绘制地图神器folium介绍及安装使用教程想要绘制更精美的可视化地图?想在地图上自由的设置各种参数?想获得灵活的交互体验?今天它就来了,Python绘制地图神器folium,上手直接开大!

    2025年7月30日
    3
  • 云计算平台构建与实验设计

    课程设计任务书一、作业目的  物联网的核心是应用,应用的核心是云计算。通过构建一个云计算平台,并利用这个平台设计云计算实验,将结果与普通的电脑计算比较两者的差别,感受云计算的优越性能,从而对物联网有更深刻的体验与认识。二、作业内容及要求    能够按照课程设计任务书按照相应的要求完成整个云计算平台的搭建,要完成这个任务,就要对云计算平台的架构和原理有一定的认识,对物联网的应用层有深入的学习,通…

    2022年4月6日
    50
  • ubuntu安装qt5.12_ubuntu安装分区

    ubuntu安装qt5.12_ubuntu安装分区下载Qt安装包官网下载速度较慢,可以从国内镜像下载。清华大学:https://mirrors.tuna.tsinghua.edu.cn/qt/中国科学技术大学:http://mirrors.ustc.edu.cn/qtproject/中国互联网络信息中心:https://mirrors.cnnic.cn/qt/安装包名称:qt-opensource-linux-x64-5.14.2.run./qt-opensource-linux-x64-5.14.2.run安装好后需要一些配置才能开始开发

    2022年10月15日
    2
  • dmesg 命令

    dmesg 命令dmesg 这个命令 Linux 下用的还是比较多的 现在来详细看一下 Linuxdmesg 命令用于显示开机信息 kernel 会将开机信息存储在 ringbuffer 中 您若是开机时来不及查看信息 可利用 dmesg 来查看 开机信息亦保存在 var log 目录中 名称为 dmesg 的文件里 一 语法 dmesg cn s lt 缓冲区大小 gt 二 选项 c 显示信息后

    2025年7月28日
    2

发表回复

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

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