First off, Sleep(1) is not "sleep for one second" - it's "sleep for one millisecond" - a thousandth of a second.
Secondly, the two thread execute the same code, but they don't share variables:
for (int i = 0; i < 10; i++)
creates a new instance of
i
in each thread, so they will have different values and will not affect each other.
You cannot guarantee which thread will run at any specific time - that is totally up to the operating system, which will pick threads which aren't waiting for something (like the Sleep timer) effectively at random as soon as a core becomes available - which means they can actually ruin at the same time if you have sufficient cores and the system isn't too busy: if you want to control what happens when in a multithreaded system, you are responsible for explicitly make it happen, most often with semaphores.
If you want thread two to wait for thread one, you need to make it wait until thread one is ready for it - and that means they can't share the same code, or thread 1 will end up waiting for itself to finish!
And to make it worse ... the main method is not being executed on either of those threads, so when it gets to the end your app will close and you won't see anything...
I suggest you go back to your course notes and read them again - this is a complicated subject and you don't seem to have grasped it properly yet.