首頁  >  文章  >  Java  >  Java 中的線程並發

Java 中的線程並發

Linda Hamilton
Linda Hamilton原創
2024-11-02 11:05:30851瀏覽

Thread Concurrency In Java

高級 Java 中的執行緒並發或多執行緒允許多個執行緒同時執行,從而增強複雜應用程式的效能和回應能力。以下是其關鍵概念和實用程式的簡明細分。

Java 中多執行緒的主要特性:

  1. 建立執行緒。
  2. 使用執行器進行執行緒管理
  3. 並發實用程式
  4. 分叉/連接框架
  5. 具有完整未來的非同步程式設計

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️⃣ 分岔/連接框架

  • 1.對於分治任務,ForkJoinPool 將任務拆分為平行處理的較小子任務,這在遞歸演算法中特別有用。

5️⃣ 有完整未來的非同步程式設計

  • CompletableFuture 支援非同步和非阻塞編程,允許連結和組合複雜工作流程的任務。

使用執行緒範例

主類別呼叫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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn