How to create thread

Create thread using Thread class


Thread class implements Runnable interface in it. Thread class available in java.lang package. Thread class is extended to create thread. Following are the steps for creating thread using Thread class.

Step 1 Extend Thread class and override run() method

Create a subclass of Thread class and override run() method.

Syntax :

class one extends Thread
 {
 public void run()
   {
     System.out.println("Thread running...");
   }
 }

Step 2 Create object of subclass

This constructor has two parameter. String parameter passed as second parameter will be set as name of thread.

Syntax :


one ob=new one();


Step 3 Call start() method

Finally call start() method. On invocation of start() method a new thread will be created and this thread will execute run() method. Call to start() method is asynchronous which means call to start() method will return immediately.

Syntax :

// invocation of start method will create new thread.
th.start();


Complete Program for multithreading

Following program is having two threads in it. These threads will be running concurrently. Thread scheduling is not predictable. Output of following program is not fixed. It will vary with every execution.

class one extends Thread
{
  public void run()
   {
    for(int i=0;i<10;i++)
	 System.out.println("New Thread:"+i);
   }
 }
 class two
 {
  public static  void main(String arg[])
   {
     one ob=new one(); 
     ob.start();
	 
	 // This loop executed by Main Thread
	 for(int i=0;i<10;i++)
	 System.out.println("Main Thread:"+i);
	 
   }  
} 

Methods in thread class

S.N.Method & Description
1 static int activeCount()
This method returns the number of active threads in the current thread's thread group.
2 void checkAccess()
This method determines if the currently running thread has permission to modify this thread.
3 protected Object clone()
This method returns a clone if the class of this object is Cloneable.
4static Thread currentThread()
This method returns a reference to the currently executing thread object.
5 static void dumpStack()
This method prints a stack trace of the current thread to the standard error stream.
6static int enumerate(Thread[] tarray)
This method copies into the specified array every active thread in the current thread's thread group and its subgroups.
7static Map<Thread,StackTraceElement[]> getAllStackTraces()
This method returns a map of stack traces for all live threads.
8 ClassLoader getContextClassLoader() br>This method returns the context ClassLoader for this Thread.
9 static Thread.UncaughtExceptionHandler getDefaultUncaughtExceptionHandler()
This method returns the default handler invoked when a thread abruptly terminates due to an uncaught exception.
10 long getId()
This method returns the identifier of this Thread.
11 String getName()
This method returns this thread's name.
12 int getPriority()
This method Returns this thread's priority.
13 StackTraceElement[] getStackTrace()
This method returns an array of stack trace elements representing the stack dump of this thread.
14 Thread.State getState()
This method returns the state of this thread.
15 ThreadGroup getThreadGroup()
This method returns the thread group to which this thread belongs.
16Thread.UncaughtExceptionHandler getUncaughtExceptionHandler()
This method returns the handler invoked when this thread abruptly terminates due to an uncaught exception.
17static boolean holdsLock(Object obj)
This method returns true if and only if the current thread holds the monitor lock on the specified object.
18void interrupt()
This method interrupts this thread.
19static boolean interrupted()
This method tests whether the current thread has been interrupted.
20 boolean isAlive()
This method tests if this thread is alive.
21boolean isDaemon()
This method tests if this thread is a daemon thread.
22 boolean isInterrupted()
This method tests whether this thread has been interrupted.
23void join()
Waits for this thread to die.
24 void join(long millis)
Waits at most millis milliseconds for this thread to die.
25 void join(long millis, int nanos)
Waits at most millis milliseconds plus nanos nanoseconds for this thread to die.
26 void run()
If this thread was constructed using a separate Runnable run object, then that Runnable object's run method is called; otherwise, this method does nothing and returns
27void setContextClassLoader(ClassLoader cl)
This method sets the context ClassLoader for this Thread.
28 void setDaemon(boolean on)
This method marks this thread as either a daemon thread or a user thread.
29 static void setDefaultUncaughtExceptionHandler(Thread.UncaughtExceptionHandler eh)
This method set the default handler invoked when a thread abruptly terminates due to an uncaught exception, and no other handler has been defined for that thread.
30 void setName(String name)
This method changes the name of this thread to be equal to the argument name.
31 void setPriority(int newPriority)
This method changes the priority of this thread.
32 void setUncaughtExceptionHandler(Thread.UncaughtExceptionHandler eh)
This method set the handler invoked when this thread abruptly terminates due to an uncaught exception.
33 static void sleep(long millis)
This method causes the currently executing thread to sleep (temporarily cease execution) for the specified number of milliseconds, subject to the precision and accuracy of system timers and schedulers.
34 static void sleep(long millis, int nanos)
This method causes the currently executing thread to sleep (cease execution) for the specified number of milliseconds plus the specified number of nanoseconds, subject to the precision and accuracy of system timers and schedulers.
35void start()
This method causes this thread to begin execution; the Java Virtual Machine calls the run method of this thread.
36String toString()
This method Returns a string representation of this thread, including the thread's name, priority, and thread group.
37 static void yield()
This method causes the currently executing thread object to temporarily pause and allow other threads to execute.