how many ways to create thread in java

Asked on August 02, 2015
I am learning java thread and want to know how many way to create a thread in java. I know about "extends Thread" class. Is any other way?

Replied on August 02, 2015
There are two ways to create a thread:
1-By extending Thread class
class City extends Thread{
public void run(){
System.out.println("thread is running...");
}
public static void main(String args[]){
City t1=new City();
t1.start();
}
}
2-By implementing Runnable interface.
class Multi3 implements Runnable{
public void run(){
System.out.println("thread is running...");
}
public static void main(String args[]){
Multi3 m1=new Multi3();
Thread t1 =new Thread(m1);
t1.start();
}
}

Replied on August 02, 2015
In Java there are three ways to create a Thread.
1- By extending Thread class
2- By implementing Runnable interface
3- By implementing Callable interface
Example for 1-
public class ThreadExtends extends Thread {
public void run() {
System.out.println("Java Thread-Concretepage.com");
}
public static void main(String[] args) {
ThreadExtends te = new ThreadExtends();
te.start();
System.out.println("main thread");
}
}
Example for 2-
class JavaThreadDemo implements Runnable {
public void run() { // Always use public void run() method to call a thread
try {
for (int i = 0; i < 10; i++) {
System.out.println("new thread");
}
} catch (InterruptedException ex) {
ex.printStackTrace();
}
}
}
class JavaThread {
public static void main(String[] args) {
Runnable run = new JavaThreadDemo();
Thread td = new Thread(run);
td.start();
System.out.println("main thread");
}
}
Example for 3- http://www.concretepage.com/java/java-callable-example

Replied on August 02, 2015
In Java 1.5 there is another way to invoke a thread. That is by “ExecutorServiceâ€. All these classes are from the “java.util.concurrent†package. There are various ways to create a “ExecutorService†using “Executors†factory class. The following is one of the way to create “ExecutorServiceâ€..
ExecutorService es= Executors.newSingleThreadExecutor();
RunnableImpl r = new RunnableImpl();
Future fu=es.submit(r);