1. A method for predictively scheduling a thread in a multi-threaded processor, comprising: executing a first thread in a processor core associated with a shared cache; while executing the first thread, measuring one or more metrics to characterize the first thread; using the characterization of the first thread and a characterization of a second thread to predict a performance impact associated with simultaneously executing the second thread in a second processor core which is associated with the cache; and when the predicted performance impact indicates that executing the second thread on the second processor core will improve performance for the multi-threaded processor, executing the second thread on the second processor core.