1. A method of executing threads in a computer system, comprising: segregating threads into either a first thread type or a second thread type; forming first batches, each first batch comprising primarily threads of the first thread type; and executing the threads of each first batch.