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


相关推荐

  • java中数组的下标的数据类型是_java返回数组下标

    java中数组的下标的数据类型是_java返回数组下标packagepractice;publicclassArrayElementsAddIndices{ publicstaticvoidmain(String[]args){ intarray[]={5,4,3,2,1,6,7,8,9}; System.out.println(“原数组中的元素:”); for(inti=0;i<array.length;i++){ System.out.print(array[i

    2022年10月11日
    1
  • x201换风扇_「x201拆机」联想 Thinkpad x201i怎么拆机清理风扇灰尘? – seo实验室[通俗易懂]

    x201换风扇_「x201拆机」联想 Thinkpad x201i怎么拆机清理风扇灰尘? – seo实验室[通俗易懂]x201拆机笔记本散热风扇使用时间长了就累积很多灰尘,堵塞出风口,从而大幅降低散热效果。因此有必要对其清理。要彻底清理风扇灰尘,需要拆机方可。首先要把笔记本的电池取下。电池取下后,我们就可以开始拆卸内存了,首先要把内存外壳拆下。拆下内存盖后,我们只要把两边的卡扣松动,轻轻一拔即可把内存取下。这款笔记本的硬盘仓很隐蔽,不过在D面还是有明显的图标提示,拧下螺丝和卡扣,即可看到硬盘。硬盘盖拆下来之后,只…

    2022年6月27日
    121
  • SXSSFWorkbook 转 InputStream「建议收藏」

    SXSSFWorkbook 转 InputStream「建议收藏」publicstaticInputStreamworkbookConvertorStream(SXSSFWorkbookworkbook){InputStreamin=null;try{//临时缓冲区ByteArrayOutputStreamout=newByteArrayOutputStream();…

    2022年9月21日
    0
  • PAT乙级题库

    PAT乙级题库1001害死人不偿命的(3n+1)猜想(15分)1002写出这个数(20分)1004成绩排名(20分)1006换个格式输出整数(15分)1007素数对猜想(20分)1008数组元素循环右移问题(20分)1011A+B和C(15分)1012数字分类(20分)1013数素数(20分)1016部分A+B(1…

    2022年5月25日
    54
  • 2018年强势推荐区块链产品项目:流量魔盒详细操作攻略[通俗易懂]

    流量魔盒概述    在日常生活中,我们使用流量的方式其实都不是100%正确。例如微信,每使用一段时间就会产生大量的缓存垃圾,我们只有去清理掉缓存垃圾才能使我们的微信操作更流畅。    当我们使用了1G的流量,必定会产生一定量的缓存,流量魔盒把流量缓存统一、归集、上传、累计每个用户的缓存转化为真实流量作为实际应用,合理利用资源,把产生的流量缓存变成我们的财富。 注册地址https:…

    2022年4月18日
    50
  • 配置zabbix时启动失败解决办法

    配置zabbix时启动失败解决办法一开始按照这篇博客来配置zabbixhttps://blog.csdn.net/rujianxuezha/article/details/79842998启动zabbix时出现以下提示[root@www~]#systemctlstartzabbix-serverJobforzabbix-server.servicefailedbecauseaconfiguredresourc…

    2022年6月17日
    314

发表回复

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

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