For the first part of your question:
It's possible that the second thread may have finished by the time execution reaches the sleep() statement in the first thread. This is because the JVM allocates CPU time to threads not based on when in time each was started, but based on complex scheduling algorithms. The only thing that is guaranteed when you call Thread.sleep(1000)
is that the thread WILL stop execution at that point for at least 1000 milliseconds.
The second part - putting one thread to sleep from another - has been addressed well by others. You need to watch out for race conditions.