# 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`.

Parent topic: Creating a ThreadWorker