1. A method comprising: determining, at a thread of a computer program, whether to access an instance of a software component from one of a private software component instance collection and a software component instance pool, the private software component instance collection configured to include an instance of the software component that is not synchronized with an additional thread of the computer program, the software component instance pool configured to include an instance of the software component that is synchronized with the additional thread of the computer program, the determining based on a number of other threads accessing the software component instance pool and whether the instance of the software component is to execute at least one of a single task and a few simple tasks; ascertaining whether the private software component instance collection includes the instance of the software component; and creating the instance of the software component for the private software component instance collection based on the ascertaining.