高級 Java 中的執行緒並發或多執行緒允許多個執行緒同時執行,從而增強複雜應用程式的效能和回應能力。以下是其關鍵概念和實用程式的簡明細分。
Java 中多執行緒的主要特性:
1️⃣ 建立執行緒。
擴充執行緒:透過重寫 run() 方法建立一個新執行緒。
實作 Runnable:將 Runnable 實例傳遞給 Thread 物件。
實作 Callable:與 Runnable 不同,Callable 允許執行緒傳回結果並處理檢查的例外狀況。
2️⃣ 使用執行器進行執行緒管理。
Java 的執行器框架 (java.util.concurrent.ExecutorService) 管理執行緒池,允許高效處理任務。
FixedThreadPool 和 CachedThreadPool 等執行器會建立一個可重複使用執行緒池,有效地管理它們以減少建立新執行緒的開銷。
3️⃣ 並發實用程式
鎖:像 ReentrantLock 這樣的高階鎖定機制比同步方法提供了更多的靈活性,允許定時和可中斷的鎖定。
原子變數:java.util.concurrent.atomic 套件包含提供無鎖定線程的原子類(AtomicInteger、AtomicLong)-
安全營運。
同步器:包含以下實用程式:
CountDownLatch:允許執行緒等待其他執行緒完成
任務。
CyclicBarrier:在公共
處同步固定數量的線程
障礙點。
信號量:透過允許特定數量來控制對資源的存取
並發線程數。
4️⃣ 分岔/連接框架
5️⃣ 有完整未來的非同步程式設計
使用執行緒範例
主類別呼叫2個不同的執行緒
public class ThreadConcurrence { public static void main(String[] args) { // There is 2 type you have to call thread method //1- Extend Thread class //1- Implements Runnable class // why Implement concept is introduce here // because in java multiple thread dose not support that's so why implement class will introduce // ex- when u extend (inherit) base call, then at that time this call can not extend another Thread class. int n = 10; for (int i = 0; i < n; i++) { // in case of extend(inherit) Thread class Thread1 t1 = new Thread1(); t1.start(); // in case of implement Runnable class Thread t2 =new Thread(new Thread2()); t2.start(); } } }
線程1--(擴充線程)
public class Thread1 extends Thread{ //If you are extend Thread class then you most be used run() // Because when you start a thread then run() automatically call and run public void run(){ try { System.out.println("Thread1 is running now...."); } catch (Exception e) { throw new RuntimeException(e); } } }
Thread2--(實作 Runnable)
public class Thread2 implements Runnable { //IF you are implement thread Then run() will be executed. // Because when you start a thread then run() automatically call and run public void run(){ try { System.out.println("Thread2 is running......."); } catch (Exception e) { throw new RuntimeException(e); } } }
結論:
透過利用這些工具和框架,進階 Java 多執行緒可以建立可無縫處理並發任務的可擴展、高效能應用程式。
如需更多見解,請隨時提及您的 Linkedin 和 GitHub 以獲取深入的範例和程式碼範例!如果您需要任何具體調整,請告訴我。
Linkedin:https://www.linkedin.com/in/pravanjan-17p/
GitHub:https://github.com/Prabhanjan-17p
以上是Java 中的線程並發的詳細內容。更多資訊請關注PHP中文網其他相關文章!