In this post, Java Interview Questions and Answers are discussed, which are helpful for Java beginners and Experienced persons. When you go for Selenium Test Automation Interview, you can expect similar kind of questions.
121. Explain yield() method in thread class ?
Yield() method makes the current running thread to move in to runnable state from running state giving chance to remaining threads of equal priority which are in waiting state. yield() makes current thread to sleep for a specified amount of time.There is no guarantee that moving a current running thread from runnable to running state. It all depends on thread scheduler it doesn’t gurantee anything.
Calling yield() method on thread does not have any affect if object has a lock. The thread does’nt lose any lock if it has acquired a lock earlier.
Signature :
public static native void yield(){ }
122. Is it possible for yielded thread to get chance for its execution again ?
Yield() causes current thread to sleep for specified amount of time giving opportunity for other threads of equal priority to execute. Thread scheduler decides whether it get chance for execution again or not. It all depends on mercy of thread scheduler.
123. Explain the importance of join() method in thread class?
A thread can invoke the join() method on other thread to wait for other thread to complete its execution. Assume we have two threads, t1 and t2 threads . A running thread t1 invokes join() on
thread t2 then t1 thread will wait in to waiting state until t2 completes. Once t2 completes the execution, t1 will continue.
join() method throws Interrupted Exception so when ever we use join() method we should handle Interrrupted Exception by throws or by using try catch block.
Signature :
public final void join() throws InterruptedException { } public final synchronized void join(long millis) throws InterruptedException { } public final synchronized void join(long millis, int nanos) throws InterruptedException { }
124. Explain purpose of sleep() method in java?
sleep() method causes current running thread to sleep for specified amount of time . sleep() method is the minimum amount of the time the current thread sleeps but not the exact amount of time.
Signature :
public static native void sleep(long millis) throws InterruptedException { } public static void sleep(long millis, int nanos) throws InterruptedException { }
125. Assume a thread has lock on it, calling sleep() method on that thread will release the lock?
Calling sleep() method on thread which has lock does’nt affect. Lock will not be released though the thread sleeps for a specified amount of time.
126. Can sleep() method causes another thread to sleep?
No sleep() method causes current thread to sleep not any other thread.
127. Explain about interrupt() method of thread class ?
Thread class interrupt() method is used to interrupt current thread or another thread. It doesnot mean the current thread to stop immediately, it is polite way of telling or requesting to continue your present work. That is the reason we may not see the impact of interrupt call immediately.
Initially thread has a boolean property(interrupted status) false. So when we call interrupt() method status would set to true. This causes the current thread to continue its work and does not have impact immediately.
If a thread is in sleeping or waiting status (i.e thread has executed wait () or sleep() method) thread gets interrupted it stops what it is doing and throws an interrupted exception. This is reason we need to handle interrupted exception with throws or try/ catch block.
128. Explain about interthread communication and how it takes place in java?
Usually threads are created to perform different unrelated tasks but there may be situations where they may perform related tasks. Interthread communication in java is done with the help of following three methods :
- wait()
- notify()
- notifyAll()
129. Explain wait(), notify() and notifyAll() methods of object class ?
wait() : wait() method() makes the thread current thread sleeps and releases the lock until some other thread acquires the lock and calls notify().
notify() :notify() method wakes up the thread that called wait on the same object.
notfiyAll() :notifyAll() method wakes up all the threads that are called wait() on the same object. The highest priority threads will run first.
All the above three methods are in object class and are called only in synchronized context.
All the above three methods must handle InterruptedException by using throws clause or by using try catch clause.
130. Explain why wait() , notify() and notifyAll() methods are in Object class rather than in thread class?
First to know why they are in object class we should know what wait(), notify(), notifyAll() methods do. wait() , notify(), notifyAll() methods are object level methods they are called on same object.wait(), notify(), notifyAll() are called on an shared object so to they are kept in object class rather than thread class.
131. Explain IllegalMonitorStateException and when it will be thrown?
IllegalMonitorStateException is thrown when wait(), notify() and notifyAll() are called in non synchronized context. Wait(), notify(),notifyAll() must always be called in synchronized context other wise we get this run time exception.
132. When wait(), notify(), notifyAll() methods are called does it releases the lock or holds the acquired lock?
wait(), notify(), notifyAll() methods are always called in synchronized context. When these methods are called in synchronized context.
So when they enter first in synchronized context thread acquires the lock on current object. When wait(), notify(), notifyAll() methods are called lock is released on that object.
133. Explain which of the following methods releases the lock when yield(), join(),sleep(),wait(),notify(), notifyAll() methods are executed?
Method |
Releases lock (Yes or No) |
yield() |
No |
sleep() |
No |
join() |
No |
wait() |
Yes |
Notify() |
Yes |
notifyAll() |
Yes |
134. What are thread groups?
Thread Groups are group of threads and other thread groups. It is a way of grouping threads so that actions can be performed on set of threads for easy maintenance and security purposes.
For example we can start and stop all thread groups. We rarely use thread group class. By default all the threads that are created belong to default thread group of the main thread. Every thread belongs to a thread group. Threads that belong to a particular thread group cannot modify threads belonging to another thread group.
135. What are thread local variables ?
Thread local variables are variables associated to a particular thread rather than object. We declare ThreadLocal object as private static variable in a class. Everytime a new thread accesses object by using getter or setter we are accesing copy of object. Whenever a thread calls get or set method of ThreadLocal instance a new copy is associated with particular object.
136. What are daemon threads in java?
Daemon threads are threads which run in background. These are service threads and works for the benefit of other threads. Garbage collector is one of the good example for daemon threads.
By default all threads are non daemon. Daemon nature of a thread can be inherited. If parent thread is daemon , child thread also inherits daemon nature of thread.
137. How to make a non daemon thread as daemon?
By default all threads are non daemon. We can make non daemon nature of thread to daemon by using setDaemon() method. The important point to note here we can call setDaemon() only before start() method is called on it. If we call setDaemon() after start() method an IllegalThreadStateException will be thrown.
138. Can we make main() thread as daemon?
Main thread is always non daemon. We cannot change the non daemon nature of main thread to daemon.
139. What are nested classes in java?
Class declared with in another class is defined as nested class. There are two types of nested classes in java.
- Static nested class
- Non static nested class
A static nested class has static keyword declared before class definition.
140. What are inner classes or non static nested classes in java?
Nested classes without any static keyword declaration in class definition are defined as non static nested classes. Generally non static nested classes are referred as inner classes.
There are three types of inner classes in java :
- Local inner class
- Member inner class
- Anonymous inner class