java 异步调用方法_java异步调用方法有哪些?如何实现异步调用?

java 异步调用方法_java异步调用方法有哪些?如何实现异步调用?你知道java异步调用方法都有哪些吗?下面的文章内容,就对这方面的问题做了一下整理,一起来看看java异步调用的方法吧!1、利用Spring的异步方法去执行注:没有返回值在启动类又或者是配置类加上@EnableAsync注解。packageme.deweixu.aysncdemo;importorg.springframework.boot.SpringApplication;importo…

大家好,又见面了,我是你们的朋友全栈君。

你知道java异步调用方法都有哪些吗?下面的文章内容,就对这方面的问题做了一下整理,一起来看看java异步调用的方法吧!

1、利用Spring的异步方法去执行

注:没有返回值

在启动类又或者是配置类加上@EnableAsync注解。package me.deweixu.aysncdemo;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

import org.springframework.scheduling.annotation.EnableAsync;

@EnableAsync

@SpringBootApplication

public class AysncDemoApplication

{

public static void main(String[] args)

{

SpringApplication.run(AysncDemoApplication.class, args);

}

}

先将longTimeMethod封装到Spring的异步方法当中。

这样的方法必须要写在Spring管理的类当中。

还要注意注解@Async。

@Async注解能够在方法上使用,也能够在类上,用在类上,对类当中的所有方法起作用。@Servicepublic class AsynchronousService{  @Async

public void springAsynchronousMethod(){

longTimeMethod();

}

}

其他类调用该方法。

注意了,一定要其他的类,假如,在同类中调用,那么是不会生效的。

至于为什么会这样,大家对Spring AOP的实现原理进行一下了解。@Autowired

private AsynchronousService asynchronousService;

public void useAsynchronousMethod()

{

//我们需要执行的代码1

asynchronousService.springAsynchronousMethod();

//我们需要执行的代码2

}

二、原生Future方法//我们需要执行的代码1

Future future = longTimeMethod2();

//我们需要执行的代码2

Integer result = future.get();

调用longTimeMethod2返回一个Future对象,之后处理需要执行的代码2,到需要返回结果时,直接调用future.get(),就可以获取到返回值。

再一起来看看如何实现longTimeMethod2。private Future longTimeMethod2()

{

//创建线程池

ExecutorService threadPool = Executors.newCachedThreadPool();

//获取异步Future对象

Future future = threadPool.submit(new Callable()

{

@Override

public Integer call() throwsException

{

return longTimeMethod();

}

});

return future;

}

new线程Thread t = new Thread()

{

@Override

public void run()

{

longTimeMethod();

}

};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(“报错啦!!”);

}

}

});

}

四、Spring的异步方法和Future接收返回值

将longTimeMethod封装到Spring的异步方法当中。

这里的异步方法的返回值是Future的实例。

这个方法必须要写在Spring管理的类当中。

注意注解@Async。@Service

public class AsynchronousService

{

@Async

public Future springAsynchronousMethod()

{

Integer result = longTimeMethod();

return new AsyncResult(result);

}

}

其他类调用这个方法。

这里要注意一下,一定要其他的类,假如在同类当中的话,是不可以生效的。

假如,调用之后接收返回值,不对返回值进行操作则为异步操作,进行操作就转为同步操作,等待对返回值操作完之后,才会继续执行主进程下面的流程。@Autowired

private AsynchronousService asynchronousService;

public void useAsynchronousMethod()

{

Future future = asynchronousService.springAsynchronousMethod();

future.get(1000, TimeUnit.MILLISECONDS);

}

java异步调用方法你都了解了吧,更多相关内容,请继续来奇Q工具网的java架构师栏目进行了解吧。

推荐阅读:

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • spring security——基本介绍(一)「建议收藏」

    spring security——基本介绍(一)「建议收藏」一、springsecurity简介springsecurity的核心功能主要包括:认证(你是谁) 授权(你能干什么) 攻击防护(防止伪造身份)其核心就是一组过滤器链,项目启动后将会自动配置。最核心的就是BasicAuthenticationFilter用来认证用户的身份,一个在springsecurity中一种过滤器处理一种认证方式…

    2022年6月16日
    39
  • kubenetes 应用更新

    kubenetes 应用更新

    2021年6月7日
    137
  • HTML中的表单_表格和表单的作用各是什么

    HTML中的表单_表格和表单的作用各是什么表格表格的基本构成标签table标签:表格标签caption标签:表格标题tr标签:表格中的行th标签:表格的表头td标签:表格单元格表格的基本结构<table>定义表格<caption>表格标题</caption><tr>定义表行<th>定义表头</th></tr><tr&g…

    2022年8月11日
    6
  • b站超过1000万粉丝的up主(b站第一位千万up主)

    前几天一位好朋友入了B站,问我如何才能成为一名百万粉丝的up主。这不,于是我做了这篇的一些分析,知道了成为百万粉丝up主的一些小秘密。还做了一个昵称生成器,给其昵称起名提供建议。这是她的b站视频截图:关于昵称起名我的想法是这样,是我们把B站这些百万粉丝大佬的昵称分析一下成分构成,根据相关性随机起个名,是不是就有百万粉丝up主昵称的那味了?上面截图是她改名前的昵称,是否会改名,改名后叫什么咱们拭目以待。咱们现在就开始爬取整整:B站up主信息爬取直接通过b站首页去爬是很不方便的,这里我找到了两个第

    2022年4月18日
    294
  • stream的groupingby_handlemapping

    stream的groupingby_handlemappinggroupingBy用于分组,toMap用于list转map测试代码:1.建一个实体类,测试中用packagecom.xhx.java;/***xuhaixing*2018/7/2021:43**/publicclassStudent{privateStringname;privateStringsex;priva…

    2022年8月20日
    6
  • hadoop入门教程列表

    hadoop入门教程列表最近也在看hadoop,搜集了一些入门的教程。感觉不错。写在这里分享下。1、从安装到实例以及基本的原理都有涉及:虾虾皮hadoop系列入门。2、一份不错的单节点hadoop搭建环境以及运行WordCount的教程:running-hadoop-on-ubuntu-linux-single-node-cluster 。3、Eclipse远程编译运

    2022年6月9日
    30

发表回复

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

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