1. A computer program product for multi-threading, the computer program product comprising: a non-transitory computer readable storage medium having computer readable program code embodied therewith, the computer readable program code comprising: computer readable program code configured to generate an interrupt based on an event; computer readable program code configured to select a thread for monitoring; computer readable program code configured to capture information, with an interrupt handler, for a monitored thread; computer readable program code configured to set an affinity of the monitored thread such that the monitored thread runs only on a current processor without being able to migrate to a different processor; and computer readable program code configured to retrieve, with a sampler thread that runs on the current processor, a call stack associated with a monitored thread after the affinity of the monitored thread has been set to the current processor.