Threads in Java

java, multithreading

Solution

To create threads, create a new class that extends the `Thread` class, and instantiate that class. The extending class must override the `run` method and call the `start` method to begin execution of the thread.

Inside `run`, you will define the code that constitutes a new thread. It is important to understand that `run` can call other methods, use other classes and declare variables just like the main thread. The only difference is that `run` establishes the entry point for another, concurrent thread of execution within your program. This will end when `run` returns.

Here's an example:

public class MyThread extends Thread {
    private final String name;

    public MyThread(String name) {
        this.name = name;
    }

    public void run() {
        try {
            for (; ; ) {
                System.out.println(name);
                Thread.sleep(1000);
            }
        } catch (InterruptedException e) {
            System.out.println("sleep interrupted");
        }
    }

    public static void main(String[] args) {
        Thread t1 = new MyThread("First Thread");
        Thread t2 = new MyThread("Second Thread");
        t1.start();
        t2.start();
    }
}

You will see this on the screen:

First Thread
Second Thread
First Thread
Second Thread
First Thread

This tutorial also explains the `Runnable` interface. With Spring, you could use a thread pool.

Problem

I was today asked in an interview over the Thread concepts in Java? The Questions were... - What is a thread? - Why do we go for threading? - A real time example over the threads. - Can we create threads in Spring framework service class. - Can flex call a thread? I did not answer any questions apart from definition of Thread, that too I just learnt from internet. Can anyone explain me clearly over this. Update: What is a difference between a thread and a normal java class. why do we need threading... can i execute business logic in threads. Can i call a different class methods in Threads.

Original source