This week's book giveaway is in the Agile and other Processes forum. We're giving away four copies of The Mikado Method and have Ola Ellnestam and Daniel Brolund 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.
Somebody has an explanation for this?
Thank you and best regards
polarbear
Rahul P Kumar
Ranch Hand
Joined: Sep 26, 2009
Posts: 188
posted
0
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.
Miklos Szeles
Ranch Hand
Joined: Oct 21, 2008
Posts: 142
posted
0
Put a Thread.sleep(100) into the for loop, and check again. Check the concurrency tutorial to understand how threading works.
Ulf Dittmer
Marshal
Joined: Mar 22, 2005
Posts: 35247
7
posted
0
The run method finishes much too quickly. The thread scheduler doesn't switch contexts *that* often.
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.
Campbell Ritchie
Sheriff
Joined: Oct 13, 2005
Posts: 32689
4
posted
0
Not quite the same as what you showed earlier . . .