How Threads Are Synchronized