Anil Arrabole
Anil Arrabole

Reputation: 4006

Creating threads in Java

I am a newbie to Java and wondering whether I can create threads in following way.

Desired Java Code :

Class MyClass {

    Myclass(){
        Statement1;//Create a thread1 to call a function
        Statement2;//Create a thread2 to call a function
        Statement3;//Create a thread3 to call a function
    }
}

Is it possible to create threads like the above code?

Upvotes: 0

Views: 275

Answers (4)

Gregory Nozik
Gregory Nozik

Reputation: 3374

I agree with all written here. The thread can be created in a two ways.

  1. To extend thread class . YouTube Tutorial
  2. To implement Runnable Interface YouTube Tutorial

Example for the first method

public class MyThread extends Thread {


public void run()
{
    int iterations = 4;


        for(int i=0;i<iterations;i++)
        {

            System.out.println("Created Thread is running " + Thread.currentThread().getId()  + " Printing "  + i) ;
            try {
                sleep(3000);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
                System.err.println(e);
            }
        }


    System.out.println("End of program"); 
}

}

To create a thread

MyThread myThread = new MyThread();

myThread.start();

Second method to implement runnable interface

public class RunnableThread implements Runnable {

@Override
public void run() {

    int iterations = 4;


    for(int i=0;i<iterations;i++)
    {

        System.out.println("Runnable Thread is running " + Thread.currentThread().getId()  + " Printing "  + i) ;
        try {
            Thread.sleep(3000);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            System.err.println(e);
        }
    }


System.out.println("End of program"); 
}

}

To create a thread

new Thread(new RunnableThread()).start();

So I think you can use both of these methods in you case statements

Upvotes: 0

drpepper72
drpepper72

Reputation: 64

Echoing GregInYEG, you should check out the tutorial, but the simple explanation is as follows:

You need to create an object class which either extends Thread or implements Runnable. In this class, create (actually, overload) a void method called "run." Inside this method is where you put the code that you would like this thread to execute once it is forked. It could simply be a call to another function if you wish. Then, when you would like to spawn a thread of this type, create one of these objects and call the "start" (not run!) method of this object. eg newThread.start();

It's important to call "start" and not "run" because a run call will simply call the method just like any other, without forking a new thread.

Still, be sure to read up in further detail and there are many more important aspects of concurrency, especially that of locking shared resources.

Upvotes: 1

AdamH
AdamH

Reputation: 2201

Yes, it is possible. You want to put your logic for each statement inside a Runnable implementation, and then pass each constructed Runnable to a new instance of Thread. Check out those 2 classes and it should become fairly obvious what you need to do.

Upvotes: 0

Greg
Greg

Reputation: 33650

The Java Concurrency tutorial includes a page on defining and starting threads. You might want to read through it along with the other pages in the concurrency tutorial.

Upvotes: 3

Related Questions