thread implementation difference and reasons