首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jexl并行处理示例

Jexl并行处理示例
EN

Stack Overflow用户
提问于 2018-02-13 15:12:47
回答 1查看 357关注 0票数 1

我需要在Jexl同时做几个动作。在官方指南中,我找到了注释@parallelhttps://commons.apache.org/proper/commons-jexl/reference/syntax.html,但没有找到如何使用它的任何示例。

有人能举几个例子吗?

我以为会是这样的:

代码语言:javascript
复制
@parallel { a.someMethod() }
@parallel { b.someMethod() }

但它似乎仍在按顺序工作。第二个例子,我已经尝试过,但仍然不起作用:

代码语言:javascript
复制
var loopFunction = function(title){
    var i = 0;
    logger:info("Starting "+title);
    while(i<100) {
        logger:info(title+"="+i);
        utils:sleep(25);
        i += 1;
    }
    logger:info("Ending "+title);
}

@parallel loopFunction('i');
@parallel loopFunction('j');
EN

回答 1

Stack Overflow用户

发布于 2018-02-14 06:17:21

这似乎是注释的一个例子,在jexl码中,似乎只有synchronized是实现的。

@重写公共对象processAnnotation(字符串名称、Object[] args、可调用语句)引发异常{ if (“同步”.equals(名称)){最终对象arg = args;同步(Arg){返回statement.call();}引发新IllegalArgumentException(“未知注释”+名称)};

有一个并行测试,但它使用ExecutorService

/** *在NTHREADS中并行运行相同的测试函数。* @param任务任务* @param循环数循环执行* @param缓存,是否使用了jexl缓存*@如果有任何问题*@引发异常*/ @抑制警告(“装箱”)无效runThreaded(Class<?扩展java.util.concurrent.Executors.newFixedThreadPool(NTHREADS);ctask、int循环、布尔缓存)抛出异常{ if ( == 0) {=== MIX.length;} if (!cache) { jexl = jexlNoCache;}MIX.length{ jexl = jexlCache;对于(int = 0;t< NTHREADS;++t) {tasks.add(ctask,循环);} //让我们不要等待超过一分钟的List期货=execs.invokeAll(任务,60,TimeUnit.SECONDS);//检查所有返回的循环(未来:期货){Assert.assertEquals(Integer.valueOf(循环),future.get());}}

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48769921

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档