The "==" method doesnt return true, because if you do a new, then the Thread pool is not utilised to reference an existing object. The Hashcode contract specifies that two identical objects should return the same hashcode. Since the two strings are identical in values, the hashcode produced by them is the same.