1. A method for detecting race conditions and atomicity violations, comprising: receiving a set of methods; identifying public static methods in the set of methods, wherein the public static methods comprise a subset of the set of methods; generating one or more multi-threaded test programs from the identified public static methods; and executing the one or more multi-threaded test programs in a specialized application to detect race conditions and atomicity violations, wherein executing the one or more multi-threaded test programs in a specialized application to detect race conditions and atomicity violations comprises first determining which multi-threaded programs are not thread safe, removing thread safe programs from the test programs to be executed, and only executing the one or more multi-threaded test programs that are not thread safe.