ea async

2025-12-11 0 665

ea async

ea async在JVM中实现异步 – wait方法。它允许程序员以顺序的方式编写异步代码

它受到.NET CLR上异步 – AWAIT的启发,请参见异步编程,并带有异步,并等待更多信息。

谁应该使用它?

ea async应用于编写非阻滞异步代码,以大量使用完整的图或完成阶段。当您的代码等待其他流程时,它通过释放工作人员线程来提高可扩展性;并通过使异步代码变得更简单,更可读性来提高生产率。

开发人员和许可证

该项目是由电子艺术开发的,并获得了BSD 3范围许可证的许可。

例子

与ea async

 import static com . ea . async . Async . await ;
import static java . util . concurrent . CompletableFuture . completedFuture ;

public class Store
{
    public CompletableFuture < Boolean > buyItem ( String itemTypeId , int cost )
    {
        if (! await ( bank . decrement ( cost ))) {
            return completedFuture ( false );
        }
        await ( inventory . giveItem ( itemTypeId ));
        return completedFuture ( true );
    }
}

在此示例中, Bank.decrement返回CompletableFuture<Boolean> and Inventory.giveItem返回CompletableFuture<String>

ea async重写了Async.await的调用,使您的方法无障碍。

这些方法看起来是阻止的,但实际上被转变为异步方法,这些方法使用完整的未图像在中间结果到达时继续执行。

没有ea async

这就是第一个示例没有ea async样子。这有点不那么可读。

 import static java . util . concurrent . CompletableFuture . completedFuture ;

public class Store
{
    public CompletableFuture < Boolean > buyItem ( String itemTypeId , int cost )
    {
        return bank . decrement ( cost )
            . thenCompose ( result -> {
                if (! result ) {
                    return completedFuture ( false );
                }
                return inventory . giveItem ( itemTypeId ). thenApply ( res -> true );
            });
    }
}

这是一个很小的例子…一种具有更多完整图的方法看起来非常令人费解。

ea async抽象了完整的未来的复杂性。

与ea async (2)

所以您喜欢完整的futures吗?尝试将此方法转换为仅使用可完整的未经图片而不会阻止(因此没有加入):

 import static com . ea . async . Async . await ;
import static java . util . concurrent . CompletableFuture . completedFuture ;

public class Store
{
    public CompletableFuture < Boolean > buyItem ( String itemTypeId , int cost )
    {
        if (! await ( bank . decrement ( cost ))) {
            return completedFuture ( false );
        }
        try {
            await ( inventory . giveItem ( itemTypeId ));
            return completedFuture ( true );
        } catch ( Exception ex ) {
            await ( bank . refund ( cost ));
            throw new AppException ( ex );
        }
    }
}

知道了?发送给我们。它看起来很丑…

入门

ea async目前支持JDK 8-10。

它与Java和Scala一起使用,应该与大多数JVM语言一起使用。使用ea async唯一要求是必须仅在返回CompletableFutureCompletionStageCompletableFuture子类的方法中使用。

使用小牛

< dependency >
    < groupId >com.ea.async</ groupId >
    < artifactId >ea-async</ artifactId >
    < version >1.2.3</ version >
</ dependency >

gradle

 \'com.ea.async:ea-async:1.2.3\'

仪器代码

选项1 -JVM参数

使用额外的JVM参数启动您的应用程序: -javaagent:ea-async-1.2.3.jar

 java -javaagent:ea-async-1.2.3.jar -cp your_claspath YourMainClass args...

建议将其添加为使用EA-ASYNC的Intellij Projects中的启动器中的默认选项。

选项2-运行时

在您的主班上或尽早致电一次:

 Async.init();

只要您的JVM具有启用功能,这将启动运行时仪器代理。如果您忘记调用此功能,则第一个await的电话将初始化系统(并打印一个警告)。

这是用于测试和开发的解决方案,其配置量最少。它可能会干扰JVM调试。这种替代方案是作为后备。

选项3-运行仪器工具

EA-ASYNC-1.2.3.JAR是一个可运行的JAR,可以预先放大您的文件。

用法:

java -cp YOUR_PROJECT_CLASSPATH -jar ea-async-1.2.3.jar classDirectory

例子:

java -cp guava.jar ; commons-lang.jar  -jar ea-async-1.2.3.jar target/classes

之后,目标/类中的所有文件都将得到仪器。这些班级将没有提及Async.awaitAsync.init

选项4-构建时间仪器,使用Maven-首选

使用EA-ASYNC-MAVEN-PLUGIN。它将在编译时间内启动您的课程,并删除所有引用Async.awaitAsync.init()

使用构建时间仪器,您的项目用户不需要将ea async在其类路径中使用,除非他们也选择使用它。这意味着ea async不需要是一种传递性依赖性

这是图书馆和Maven项目的最佳选择。

< build >
    < plugins >
        < plugin >
            < groupId >com.ea.async</ groupId >
            < artifactId >ea-async-maven-plugin</ artifactId >
            < version >1.2.3</ version >
            < executions >
                < execution >
                    < goals >
                        < goal >instrument</ goal >
                        < goal >instrument-test</ goal >
                    </ goals >
                </ execution >
            </ executions >
        </ plugin >
    </ plugins >
</ build >

下载源码

通过命令行克隆项目:

git clone https://github.com/electronicarts/ea-async.git

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

申明:本文由第三方发布,内容仅代表作者观点,与本网站无关。对本文以及其中全部或者部分内容的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。本网发布或转载文章出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,也不代表本网对其真实性负责。

左子网 编程相关 ea async https://www.zuozi.net/34372.html

ikvm
上一篇: ikvm
常见问题
  • 1、自动:拍下后,点击(下载)链接即可下载;2、手动:拍下后,联系卖家发放即可或者联系官方找开发者发货。
查看详情
  • 1、源码默认交易周期:手动发货商品为1-3天,并且用户付款金额将会进入平台担保直到交易完成或者3-7天即可发放,如遇纠纷无限期延长收款金额直至纠纷解决或者退款!;
查看详情
  • 1、描述:源码描述(含标题)与实际源码不一致的(例:货不对板); 2、演示:有演示站时,与实际源码小于95%一致的(但描述中有”不保证完全一样、有变化的可能性”类似显著声明的除外); 3、发货:不发货可无理由退款; 4、安装:免费提供安装服务的源码但卖家不履行的; 5、收费:价格虚标,额外收取其他费用的(但描述中有显著声明或双方交易前有商定的除外); 6、其他:如质量方面的硬性常规问题BUG等。 注:经核实符合上述任一,均支持退款,但卖家予以积极解决问题则除外。
查看详情
  • 1、左子会对双方交易的过程及交易商品的快照进行永久存档,以确保交易的真实、有效、安全! 2、左子无法对如“永久包更新”、“永久技术支持”等类似交易之后的商家承诺做担保,请买家自行鉴别; 3、在源码同时有网站演示与图片演示,且站演与图演不一致时,默认按图演作为纠纷评判依据(特别声明或有商定除外); 4、在没有”无任何正当退款依据”的前提下,商品写有”一旦售出,概不支持退款”等类似的声明,视为无效声明; 5、在未拍下前,双方在QQ上所商定的交易内容,亦可成为纠纷评判依据(商定与描述冲突时,商定为准); 6、因聊天记录可作为纠纷评判依据,故双方联系时,只与对方在左子上所留的QQ、手机号沟通,以防对方不承认自我承诺。 7、虽然交易产生纠纷的几率很小,但一定要保留如聊天记录、手机短信等这样的重要信息,以防产生纠纷时便于左子介入快速处理。
查看详情

相关文章

猜你喜欢
发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务