This week's book giveaway is in the OO, Patterns, UML and Refactoring forum. We're giving away four copies of Refactoring for Software Design Smells: Managing Technical Debt and have Girish Suryanarayana, Ganesh Samarthyam & Tushar Sharma on-line! See this thread for details.
I'm trying to understand how threads work in Java. For this I use this small test program:
As output, I expect a mixed sequence of numbers, e.g.: 0 0 1 1 2 2 3 3 4 5 4 6 5 7 6 8 9 7 8 9
But what I get is: 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9
It looks as if the threads were running consecutively. I use netbeans to run the program.
When you say concurrent, that does not mean that threads are running side by side, they will take their turn to execute, and it is not that you will get the output in that sequence, it may change depending upon which thread was running and which one went in wait state. Multi threading is for situations say there are two threads, one is opening the file and another is calculating something, now in absence of multi threading, works will be sequential, so unless that file is open, no business proess will happen. But because of multi threading, in the meanwhile this thread is in waiting state for file opening, another thread will start running and do some other business.
Try adding something to print the names of the Threads as well as those numbers. Look at this method; you can writein your run() method; then you can see whether the threads (probablay called thread1, thread2 or some such poetic names) are running in a particular order.
Joined: Oct 13, 2005
Not quite the same as what you showed earlier . . .
java ThreadTest Thread1 Thread2 Thread3 Thread4
. . . and see what happens if you run that class several times.