原 荐 Java8 基于spring @Async方法和Lambda实现任意代码块异步执行

栏目: 编程语言 · Java · 发布时间: 6年前

原 荐  <a href='https://www.codercto.com/topics/22013.html'>Java</a> 8 基于spring @Async方法和Lambda实现任意代码块异步执行

Java8 基于spring @Async方法和Lambda实现任意代码块异步执行

w

wailouci

发布于 昨天 15:01

字数 349

阅读 78

收藏 6

Spring Java

参与百度AI开发者大赛赢75万奖金+25万奖品,(提供教程)加群:418589053 >>> 原 荐 Java8 基于spring @Async方法和Lambda实现任意代码块异步执行

使用jdk8有一段时间了,经常到stream和lambda操作集合,项目一般也都使用的是spring framework系列。借助lambda可以实现类似 python 闭包的写法,传递代码块给方法,异步方法加让lambda就可以实现任意代码块的异步执行。

首先定一个接口用来执行异步代码块

public interface AsyncService {

    void asyncInvoke(AsyncExec consumer) throws WxErrorException;

    @FunctionalInterface
    interface AsyncExec {
        void exec() throws WxErrorException;
    }
}

给一个实现并交给spring容器管理

import me.chanjar.weixin.common.exception.WxErrorException;
    @Service
    public class AsyncServiceImpl implements AsyncService {

        @Async
        @Override
        public void asyncInvoke(AsyncExec asyncExec) throws WxErrorException {
            asyncExec.exec();
        }
    }

简单测试一下

@RunWith(SpringRunner.class)
    @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
    @ActiveProfiles("dev")
    @Slf4j
    public class AsyncServiceTest {

        @Autowired
        private AsyncService asyncService;

        @Test
        public void asyncServiceTest() throws WxErrorException,   InterruptedException {
            log.info("111111111111111");
            asyncService.asyncInvoke(() -> {
                try {
                    Thread.sleep(1000);
                    log.info("异步方法执行");
                } catch (InterruptedException e) {
                     e.printStackTrace();
                }
            });
            log.info("222222222222222");
            Thread.sleep(2000);
        }
    }

测试结果

原 荐 Java8 基于spring @Async方法和Lambda实现任意代码块异步执行

结果显示测试成功了,从log的线程名看他们代码块中的是异步线程命,并没有安装代码顺序执行,11111111和22222222主线程执行完毕后,异步方法才执行。

© 著作权归作者所有

共有人打赏支持

w

wailouci

粉丝 2

博文 1

码字总数 349

作品 0

浦东

相关文章 最新文章

教程:一起学习Hystrix--Hystrix命令执行

目录 “Hello World!” 同步执行 异步执行 响应执行 “Hello World!” 下面是一个通过实现接口 的一个Hello World 示例: 点击查看详细源码 等价于 一个等效的Hello World解决方案,使用 代替...

java_龙

05/17

0

0

java8之lambda表达式(函数式接口)

在Java中有许多已有的接口都需要封装代码块,例如:Runnable或者Comparator。lambda表达式与这些接口是向后兼容的。对于只包含一个抽象方法的接口,你可以通过lambda表达式来创建该接口的对象...

柳哥

2015/05/21

0

0

java8新特性(二)_lambda表达式

最近一直找java8相关新特性的文章,发现都太没有一个连贯性,毕竟大家写博客肯定都有自己的侧重点,这里找到一本书,专门介绍java8新特性的,感觉大家可以看看《写给大忙人看的JavaSE8》.这里...

阳光温暖

08/04

0

0

《Java8实战》读书笔记

Java8(https://book.douban.com/subject/26772632/) 引入更多编程概念、编程工具,简洁、灵活地编写代码。 优化步骤: 1)进一步复用代码,抽取公共的逻辑代码,参数化可变的逻辑代码 2)声明...

v1-alpha

2016/12/16

20

0

名词王国里的新政-解读Java8之lambda表达式

前几天在reddit上看到Java8 M8 Developer Preview版本已经发布了,不免想要尝鲜一把。Developer Preview版本已经所有Feature都完成了,Java8的特性可以在这里看到http://openjdk.java.net/p...

黄亿华

2013/09/15

0

11

没有更多内容

加载失败,请刷新页面

加载更多

下一页

(三)Nginx配置·续

概述 前文写了关于Nginx环境配置,但是还没有完,接下来将会继续讲三个相关的配置 主要是以下三个 1.Nginx访问日志 2.Nginx日志切割 3.静态文件不记录日志和过期时间 Nginx访问日志 1.先看看...

杉下

今天

1

0

jquery创建类似于java的map

var map = {}; // Map map = new HashMap(); map[key] = value; // map.put(key, value); var value = map[key]; // Object value = map.get(key); var has = key in map; // boolean has = ......

SuperDabai

今天

0

0

java大数据转换16进制转10进制

public static void main(String[] args) {String hex = "0xdbf3accc683297cf0000";BigInteger amount = new BigInteger(hex.substring(2), 16);System.out.println(amount);......

任梁荣

昨天

2

0

OSChina 周六乱弹 —— 目测我们 程序员 丁克的几率不大

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @真Skr小机灵鬼儿:8.13分享Jocelyn Pook/Russian Red的单曲《Loving Strangers》 《Loving Strangers》- Jocelyn Pook/Russian Red 手机党少...

小小编辑

昨天

14

4

原 荐 Java8 基于spring @Async方法和Lambda实现任意代码块异步执行
TypeScript基础入门 - 函数 - 剩余参数

转载 TypeScript基础入门 - 函数 - 剩余参数 项目实践仓库 https://github.com/durban89/typescript_demo.gittag: 1.2.1 为了保证后面的学习演示需要安装下ts-node,这样后面的每个操作都能...

durban

昨天

1

0

没有更多内容

加载失败,请刷新页面

加载更多

下一页


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Fluent Python

Fluent Python

Luciano Ramalho / O'Reilly Media / 2015-8-20 / USD 39.99

Learn how to write idiomatic, effective Python code by leveraging its best features. Python's simplicity quickly lets you become productive with it, but this often means you aren’t using everything th......一起来看看 《Fluent Python》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具