Threads are, of course, cool and open a world of incredible opportunities (and a heap of complexities) to programmers. Different threads change the state of different objects based on the tasks they perform. And, of course, they can step on each other's toes! But the most frightening part happens deep within the Java machine... Does that sound intriguing?