并行执行

这个并行执行器服务允许并行进行计算。

它可以用两种方式使用。首先,使用显式未来以下为:

未来<String>Future=executor.invoke(newInvokable<String>(){…});

执行器将把Invokable提交给线程池,以便在后台执行。

Invokable的最终值可以通过调用获取()关于未来;这将阻塞,直到值准备好。

Future上的其他方法可以取消执行,或仅在超时内准备就绪时才获取值。

线程池会根据需要自动启动,并在注册表本身关闭时关闭。

另一种选择将返回对象代理,而不是Future:

RSSFeed提要=executor.invoke(RSSFeed.class,new Invokable<RSSFeed_>(){…});

只有当类型是接口时,这才有效。接口的代理是围绕Future对象创建的;对代理的任何调用都将对Future调用get()(也就是说,在计算值之前将一直阻塞)。

配置

可以使用全局配置符号调整ParallelExecutor的行为。

配置符号的Java常量在中定义IOC符号

胶带.螺纹-工具启用

如果为true(默认值),则线程池将运行。如果为false,则ParallelExecutor的实现将更改为立即调用Invokeable,而不是在池线程中调用。这在环境中很有用,例如谷歌应用引擎,不支持创建线程和线程池。

胶带.螺纹-工具.芯-工具尺寸

线程池的最小大小。默认为3。

tapestry.thread-pool.max-pool大小

线程池中的最大线程数(活动或非活动)。默认为20。

tapestry.thread-pool.保持带电

等待线程保持活动状态的时间。默认为“1 m”(一分钟)。

磁带.螺纹-工具.队列大小

在5.3中增加
任务队列的大小。当池中至少有核心线程数时,任务将被放入队列中。如果队列为空,则可能会创建更多线程(最大池大小)。如果队列已满且已创建所有线程,则任务将被拒绝(并引发异常)。

默认为100。