File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
The moose likes Beginning Java and the fly likes Threads not running concurrent? Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login

Win a copy of Java Interview Guide this week in the Jobs Discussion forum!
JavaRanch » Java Forums » Java » Beginning Java
Bookmark "Threads not running concurrent?" Watch "Threads not running concurrent?" New topic

Threads not running concurrent?

Jörg Hagemann

Joined: Sep 30, 2009
Posts: 1

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
Rahul P Kumar
Ranch Hand

Joined: Sep 26, 2009
Posts: 188
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
Put a Thread.sleep(100) into the for loop, and check again. Check the concurrency tutorial to understand how threading works.
Ulf Dittmer

Joined: Mar 22, 2005
Posts: 42965
The run method finishes much too quickly. The thread scheduler doesn't switch contexts *that* often.
Campbell Ritchie

Joined: Oct 13, 2005
Posts: 46424
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

Joined: Oct 13, 2005
Posts: 46424
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.
I agree. Here's the link:
subject: Threads not running concurrent?
It's not a secret anymore!