Choosing a ThreadExecutionStrategy

ThreadWork instances need to provide a strategy defining the execution policies for its work. That is, how the work for a thread will be processed. The interface that is implemented is ThreadExecutionStrategy. The most important aspect of this is how exceptions will be treated with respect to transactions.

  • Should all the ThreadWorkUnits be wrapped in a single transaction with a single rollback on an exception?
  • Should each ThreadWorkUnit be in its own transaction?
  • Should the framework attempt to process many ThreadWorkUnits within a single transaction?
  • If an exception occurs should the framework "back up" and reprocess the successful units?
  • In general, new background processes are expected to chose from existing instances of ThreadExecutionStrategy, not create new ones. Please scan for existing implementations of ThreadExecutionStrategy.