concurrencyPolicy - 并行度策略 (concurrencyPolicy)

一组行为和约束,适用于支持异步执行的任务,例如,最大并行度和最大队列大小。

NameTypeDefaultDescription
id字符串唯一配置标识。
maxPolicy
  • loose
  • strict
loose指示是松散地还是严格地对正在任务提交者的线程上运行的任务实施最大并行度。使用不计时 invokeAll 方法或(如果仅调用单个任务)不计时 invokeAny 方法时,可在任务提交者的线程上运行任务。如果配置了“队列已满时运行”属性,那么在使用 execute 和 submit 方法时,可在任务提交者的线程上运行任务。在所有这些案例中,此属性确定在提交者的线程上运行是否计入最大并行度。
loose
松散地实施最大并行度。允许任务在任务提交者的线程上运行而不计入最大并行度。
strict
严格地实施最大并行度。在任务提交者的线程上运行的任务计入最大并行度。此策略不允许在已达到最大并行度的情况下在任务提交者的线程上运行任务。
maxWaitForEnqueue具有毫秒精度的时间段0指定等待任务入队的最长时间。如果无法在此时间间隔内使任务入队,那么任务提交将受“队列已满时运行”策略所限。更新最长等待入队时间后,更新仅应用于在该时间点后提交的任务。已在等待队列位置的任务提交继续按先前配置的值进行等待。. 指定后跟时间单位的正整数,时间单位可以是小时 (h)、分钟 (m)、秒 (s) 或毫秒 (ms)。例如,以 500ms 的形式指定 500 毫秒。可将多个值包括在单个条目中。例如,1s500ms 相当于 1.5 秒。
runIfQueueFull布尔型false使用 <execute> 或 <submit> 方法时适用。指示在队列已满并且超过最长等待入队时间时,是否在提交者的线程上运行该任务。如果将最大值策略配置为“严格”,那么是否能够在提交者的线程上运行还取决于最大并行约束。如果该任务无法在提交者的线程上运行,那么在经过最长等待入队时间之后会拒绝提交任务。
maxint
Min: 1
指定可同时运行的最大任务数。缺省值为 Integer.MAX_VALUE。可在任务进行时更新最大并行度。如果最大并行度降低至并行运行的任务数之下,那么更新将在正在进行的任务完成时逐步生效,而不是取消任务。
maxQueueSizeint
Min: 1
指定可在队列中等待执行的最大任务数。启动、取消或中止任务时,系统会从队列中移除这些任务。队列已满时,如果提交另一任务,那么行为由最长等待入队时间和“队列已满时运行”属性确定。为确保特定数目的任务可在较短时间间隔内入队,请使用大小至少为此数目的最大队列大小。缺省最大队列大小为 Integer.MAX_VALUE。任务正在进行或排队等待执行时,可更新最大队列大小。如果最大队列大小降低至当前已入队任务数之下,那么更新将逐步生效,而不是自动取消超额的已排队任务。
startTimeout具有毫秒精度的时间段指定任务提交和任务启动之间的可能耗用的最长时间。缺省情况下,任务不会超时。如果同时启用了最长等待入队时间和启动超时,请将启动超时配置为大于最长等待入队时间。如果启动超时在使用时被更新,那么新启动超时值将应用于更新发生后提交的任务。. 指定后跟时间单位的正整数,时间单位可以是小时 (h)、分钟 (m)、秒 (s) 或毫秒 (ms)。例如,以 500ms 的形式指定 500 毫秒。可将多个值包括在单个条目中。例如,1s500ms 相当于 1.5 秒。