11. What is the difference between processes and threads ? A process is an execution of a program, while a is a single execution sequence within a process. A process can contain multiple threads. A is sometimes called a lightweight process.
12. Explain different ways of creating a thread. Which one would you prefer and why ? There are three ways that can be used in order for a to be created:
- A class may extend the class.
- A class may implement the interface.
- An application can use the framework, in order to create a thread pool.
The
interface is preferred, as it does not require an object to inherit the class. In case your application design requires multiple inheritance, only interfaces can help you. Also, the thread pool is very efficient and can be implemented and used very easily.13. Explain the available thread states in a high-level. During its execution, a thread can reside in one of the following :
- : The thread becomes ready to run, but does not necessarily start running immediately.
- : The Java Virtual Machine (JVM) is actively executing the thread’s code.
- : The thread is in a blocked state while waiting for a monitor lock.
- : The thread waits for another thread to perform a particular action.
- : The thread waits for another thread to perform a particular action up to a specified waiting time.
- : The thread has finished its execution.
14. What is the difference between a synchronized method and a synchronized block ? In Java programming, each object has a lock. A thread can acquire the lock for an object by using the synchronized keyword. The synchronized keyword can be applied in a method level (coarse grained lock) or block level of code (fine grained lock).
15. How does thread synchronization occurs inside a monitor ? What levels of synchronization can you apply ? The JVM uses locks in conjunction with monitors. A monitor is basically a guardian that watches over a sequence of synchronized code and ensuring that only one thread at a time executes a synchronized piece of code. Each monitor is associated with an object reference. The thread is not allowed to execute the code until it obtains the lock.
16. What’s a deadlock ? A condition that occurs when two processes are waiting for each other to complete, before proceeding. The result is that both processes wait endlessly.
17. How do you ensure that N threads can access N resources without deadlock ? A very simple way to avoid deadlock while using N threads is to impose an ordering on the locks and force each thread to follow that ordering. Thus, if all threads lock and unlock the mutexes in the same order, no deadlocks can arise.