Multithreading in Java

Multithreading in Java is a very important concept to learn. Firstly, I would recommend reading Instance vs Object vs Reference.

Before starting, let me ask you a question What is Multitasking? – Doing multiple tasks at a time right?

Similarly, multithreading in java is a process of executing multiple threads simultaneously. Let’s deep dive into the concept.

1. What is Multitasking?

In computer programming, Multitasking is a process of executing multiple tasks concurrently in order to achieve high CPU utilization. Multitasking environment utilises computer hardware efficiently and it can be achieved in two ways:

  1. Process-Based Multitasking (Multiprocessing)
  2. Thread Based Multitasking (Multithreading)

1.1 Process-Based Multitasking:

Process-based multitasking is also known as Multiprocessing. All your day-to-day computer routine falls under this category like listening to songs, rendering video, and browsing the internet at the same time.

  • Best suitable at the OS level.
  • Heavyweight process.
  • It happens with multiple programs.
  • Each process executes at a separate memory location.

1.2 Thread Based Multitasking:

Thread based multitasking is also known as Multithreading. It happens at the code level, that means you can achieve multithreading in java while writing a single Java Program.

  • Best suitable at the programming level.
  • Lightweight process.
  • Multithreading occurs in a single program.
  • All Threads use the same memory address because of a single process.

2. What is Thread?

As we discussed, multithreading in java happens at the code level in a single program. Basically, a thread is the smallest part of any program/process.

In layman’s terms, a thread is a light weighted subprocess of any program that runs simultaneously with other threads.

Remember:

  • Thread is lightweight.
  • Thread is independent.
  • All threads share the same memory.

3. What is Multithreading in Java?

As we discussed, a thread is a subprocess. In multithreading, multiple threads are executed simultaneously to perform any task.

If your application is using multithreading, that means two or more threads are running concurrently to save time and memory.

In a multithreaded application, all threads use same memory location, in result to save memory.

Important: One thread is executed at a time in a multithreaded environment. Then why it is termed multithreading?

Because context switching between threads is very fast. Also, if you’re having quad-core machine then 4 threads can be executed parallelly.

Response time will be increased in a multithreaded environment because every single thread is independent and will not wait for any other thread to complete.

Remember:

  • It saves time and memory.
  • Better utilisation of computer resource.
  • Context switching between threads is possible.

4. Thread Lifecycle in Java

Below is the lifecycle of a Thread.

  • NEW – A thread that has not yet started.
  • RUNNABLE – A thread executing in the Java virtual machine.
  • BLOCKED – If a thread is blocked because of any other thread.
  • WAITING – A thread that is waiting indefinitely for another thread.
  • TIMED_WAITING – A thread that is waiting for another thread up to a specified waiting time.
  • TERMINATED – A thread that has exited.

Remember: A thread can be only in one state at a time.

I hope you understand the basic concept of Multithreading in Java. Follow Next Lesson in order to learn the creation of a Thread.

Official Docs: Visit Here