What is Multithreading in Java?
Java में Multithreading CPU के maximum utilization के लिए एक साथ दो या अधिक threads execute करने की एक process है। Multithreaded applications दो या अधिक threads concurrently रूप से execute करते हैं। इसलिए, इसे Java में Concurrency के रूप में भी जाना जाता है। प्रत्येक thread एक दूसरे के parallel चलता है। Mulitple threads अलग memory area allocate नहीं करते हैं, इसलिए वे memory को बचाते हैं। साथ ही, threads के बीच context switch करने में कम समय लगता है।
Advantages of Multithread:
- Thread independent होने के कारण users block नहीं होते हैं, और हम कई बार multiple operations perform कर सकते हैं|
- जैसे कि thread independent होते हैं, यदि एक thread को पूरा करता है तो अन्य thread affected नहीं होंगे।
Thread Life Cycle in Java:
There are various stages of life cycle of thread as shown in above diagram:
- New
- Runnable
- Running
- Waiting
- Dead
- New: इस phase में, “Thread class” का use करके thread बनाया जाता है। यह इस state में रहता है जब तक program thread शुरू नहीं करता है। इसे born thread के रूप में भी जाना जाता है।
- Runnable: इस page में, thread का example एक start method के साथ दिया गया है। execution को finish करने के लिए thread control को scheduler को दिया जाता है। यह scheduler पर depend करता है, कि thread को चलाना है या नहीं।
- Running: जब thread execution करना शुरू कर देता है, तो state को “running” state में बदल दिया जाता है। scheduler thread pool से एक thread का slection करता है, और यह application में execution करना शुरू कर देता है।
- Waiting: यह वह state है जब किसी thread को wait करनी होती है। चूंकि application में कई thread चल रहे हैं, threads के बीच synchronization की need है। इसलिए, एक thread का wait करना पड़ता है, जब तक कि दूसरे thread को execute नहीं किया जाता है। इसलिए, इस state को waiting state कहा जाता है।
- Dead: यह वह state है जब thread terminate हो जाता है। thread running state में है और जैसे ही यह processing complete हुआ यह “dead state” में है।
Java Multithreading Example:
CodeashThread1.java
package demotest;
public class GuruThread1 implements Runnable{
public static void main(String[] args) {
Thread CodeashThread1 = new Thread(“Codeash1”);
Thread CodeashThread2 = new Thread(“Codeash2”);
CodeashThread1.start();
CodeashThread2.start();
System.out.println(“Thread names are following:”);
System.out.println(CodeashThread1.getName());
System.out.println(CodeashThread2.getName());
}
@Override
public void run() {
}
}