Win a copy of Programmer's Guide to Java SE 8 Oracle Certified Associate (OCA) this week in the OCAJP forum!
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

Concurrent threads

 
Sasikanth Malladi
Ranch Hand
Posts: 175
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hi!
I want to create two threads which run concurrently and I tried the following piece of code but when I run it the first thread executes first and then the second one runs. Can you point out where I'm going wrong?
Thanks,
Sasikanth.
public class Threads3{
public static void main(String args[]){
new th1();
new th2();
}
}
class th1 extends Thread{
public th1(){
System.out.println("creating an object of th1 class."+this);
start();
}
public void run()
{
for(int i=0;i<10;i++)
System.out.println("In thread1");
try{Thread.sleep(500);}
catch(InterruptedException e){System.out.println(e);}
}
}
class th2 extends Thread{
public th2(){
System.out.println("creating an object of th2 class."+this);
start();
}
public void run()
{
for(int i=0;i<10;i++)
System.out.println("In thread2");
try{Thread.sleep(500);}
catch(InterruptedException e){System.out.println(e);}
}
}
 
j_mcd
Greenhorn
Posts: 2
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
The code after your for loop constructor is not inside curly braces. This means the next line
System.out.println("In thread1");
is printing 10 times and then the try block starts.
I put curly braces in and it works concurrently:
public class Threads3{
public static void main(String args[]){
new th1();
new th2();
}
}
class th1 extends Thread{
public th1(){
System.out.println("creating an object of th1 class."+this);
start();
}
public void run()
{
for(int i=0;i<10;i++) {
System.out.println("In thread1");
try{Thread.sleep(500);}
catch(InterruptedException e){System.out.println(e);}
}
}
}
class th2 extends Thread{
public th2(){
System.out.println("creating an object of th2 class."+this);
start();
}
public void run()
{
for(int i=0;i<10;i++) {
System.out.println("In thread2");
try{Thread.sleep(500);}
catch(InterruptedException e){System.out.println(e);}
}
}
}

[This message has been edited by j_mcd (edited March 21, 2001).]
 
Sasikanth Malladi
Ranch Hand
Posts: 175
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Thanks a lot, j_mcd!
Sasikanth
 
Jane Griscti
Ranch Hand
Posts: 3141
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
j_mcd
Please read the JavaRanch Name Policy and re-register using a name that complies with the rules.
Thanks for you cooperation.
------------------
Jane Griscti
Sun Certified Programmer for the Java� 2 Platform
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic