Join our newsletter! - Tips, contests and more. Click here to subscribe!
In this article we will learn what are daemon threads? and how to make thread as daemon thread along with example Java program.
This article is a part of our core java tutorial for beginners.
A daemon thread is a thread which runs in the background. Example for daemon thread in Java is the garbage collector.
In Java, thread can be divided into two categories:
- User threads
- Daemon threads
A user thread is a general thread which is created by the user. A daemon thread is also a user thread which is made as a daemon thread (background thread).
Difference between a user thread and a daemon thread is, a Java program will not terminate if there is at least one user thread in execution. But, a Java program can terminate if there are one or more daemon threads in execution.
To work with daemon threads, Java provides two methods:
void setDaemon(boolean flag)
boolean isDaemon()
The setDaemon() method is used to convert a user thread into a daemon thread. The isDaemon() thread can be used to know whether a thread is a daemon thread or not.
Below program demonstrates a daemon thread:
class ChildThread implements Runnable
{
Thread t;
ChildThread(String name)
{
t = new Thread(this, name);
t.setDaemon(true);
t.start();
}
public void run()
{
try
{
while(true)
{
System.out.println("This thread is a daemon thread: "+t.isDaemon());
System.out.println(t.getName()+": Hi");
Thread.sleep(1000);
}
}
catch(InterruptedException e)
{
System.out.println("Child thread is interrupted");
}
}
}
class DaemonThread
{
public static void main(String args[])
{
ChildThread one = new ChildThread("Daemon Thread");
}
}
Output of the above program is:
This thread is a daemon thread: true
Daemon Thread: Hi
Daemon Thread: Hi
Daemon Thread: Hi
Daemon Thread: Hi
…
Next let’s learn about thread groups in java.

Suryateja Pericherla, at present is a Research Scholar (full-time Ph.D.) in the Dept. of Computer Science & Systems Engineering at Andhra University, Visakhapatnam. Previously worked as an Associate Professor in the Dept. of CSE at Vishnu Institute of Technology, India.
He has 11+ years of teaching experience and is an individual researcher whose research interests are Cloud Computing, Internet of Things, Computer Security, Network Security and Blockchain.
He is a member of professional societies like IEEE, ACM, CSI and ISCA. He published several research papers which are indexed by SCIE, WoS, Scopus, Springer and others.

Leave a Reply