这个并行执行器服务允许并行进行计算。
它可以用两种方式使用。首先,使用显式未来以下为:
未来<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。