Java線程與多線程教程

jopen 10年前發布 | 29K 次閱讀 Java線程 Java開發

        英文原文:Java Thread and Multithreading Tutorial

        Java 線程是執行某些任務的輕量級進程。Java 通過 Thread 類提供多線程支持,應用可以創建并發執行的多個線程。 應用中有兩類線程——用戶線程和守護線程。當啟動應用時,main 線程是創建的第一個用戶線程,我們可以創建多個用戶線程和守護線程。當所有用戶進程執行完畢時,JVM 終止程序。 可以對不同的線程設置不同的屬性,但并不保證高優先級的線程在低優先級線程之前執行。線程調度器是操作系統的部分實現,當一個線程啟動后,它的執行被線程 調度器控制,JVM 不會控制它的執行。 可通過擴展 Thread 類實現的 Runnable 接口創建線程。

Thread t = new Thread (new Runnable (){
    @Override
    public void run () {
    }
});

        以上用幾行代碼就創建了新線程,在此,作為匿名類創建的 Runnable 接口,請閱讀這篇文章學習內部類,嵌套類和匿名內部類。 幾周之前,針對線程我已經發表了幾篇有用的文章,你可以一步一步按照如下順序學習 Java 中的線程。

Java線程與多線程教程

        Java 線程實例

        這是線程教程系列的第一篇文章,閱讀它來了解進程和線程。 線程和進程之間的區別是什么,使用線程的優勢和如何使用 Runnable 接口和 Thread 類創建線程。 該文還比較了 Runnable 接口和 Thread 類。

        Java 線程休眠(Thread sleep)

        Java 線程休眠 用于暫停當前執行的線程, 在將來的文章中,我們將廣泛的使用線程休眠,因此最好了解它是如何工作的以及是否準確?

        Java 線程的加入(Thread Join)

        有時我們需要等待其他線程結束后再繼續執行,我們可以使用線程的加入來實現,本文將學習線程的加入是如何工作的以及何時使用它。

        Java 線程狀態(Thread States)

        理解線程的不同狀態是重要的,本文將學習線程如何改變他的狀態以及線程調度器如何改變線程的狀態。

        Java 線程的 wait, notify 和 notifyAll

        Java Object 類包含三個方法,使用這三個方法,線程可以交流對于一個資源的鎖狀態,通過簡單地 Waiter-Notifier 實現學習如何使用這些方法。

        Java 線程安全于同步(Thread Safety and Synchronization)

        我們知道線程共享對象資源,但這將導致數據損壞,因為它們都不是原子操作。本文將學習使用不同方法實現 Java 的線程安全,學習正確使用 synchronization 操作符,synchronized 方法和 synchronized 塊。本文還有很多使用 synchronized 實例并講解使用它們帶來的問題。

        主線程中的 Java 異常(Java Exception in thread main)

        JVM 使用 main 方法創建第一個線程,本文介紹日常遇到的通用異常和產生這些異常的根本原因以及如何解決它們。

        單例類中的線程安全(Thread Safety in Singleton Class)

        本文將學習創建單例類的基本概念,什么是線程安全問題與他們如何能夠做到在單例類的線程安全。

        Java 守護線程(Daemon Thread)

        本文解釋了守護進程和如何在 Java 中創建守護線程。

        Java 線程本地變量(Thread Local)

        我們知道線程共享對象的變量,但如何得到類級別的線程局部變量呢?Java 提供了 ThreadLocal 實用類來創建線程局部變量,在這篇文章中學習如何在 Java 程序中創建ThreadLocal變量。

        Java 線程轉儲(Thread Dump)

        Java 線程轉儲提供程序的當前線程信息,這個信息對分析應用的性能問題或者查找解決死鎖情況很有幫助,這篇文章闡明了 Java 中用于產生線程轉儲的不同方法。

        如何分析和避免 Java 中的死鎖(How to Analyze Deadlock and avoid it in Java)

        死鎖是多線程等待彼此釋放資源造成的循環依賴的情況。本文討論了如何在 Java 程序中制造死鎖,如何使用線程轉儲分析死鎖以及避免 Java 程序死鎖的最佳實踐。

        Java 計時器線程(Timer Thread)

        本文闡述了如何使用 Java 的 Timer 和 TimerTask 類來創建以固定時間間隔運行的任務。使用一個例子展現如何使用和取消計時器。

        Java 生產者與消費者問題(Producer Consumer Problem)

        Java 5 之前,生產者-消費者問題可以使用 wait ()和 notify ()方法解決,但 BlockingQueue 的引入更加簡化了這個問題。通過本文我們學習 Java 中如何使用 BlockingQueue 來解決生產者-消費者問題。

        Java 線程池(Thread Pool)

        Java 線程池是等待處理任務的工作線程的集合,Java5 中引入的 Executor 框架使得它很容易在 java 中使用 Executors 和的 ThreadPoolExecutor 類創建線程池,本文學習如何使用它們來在 Java 中創建線程池。

        Java 回調屬性(Callable Future)

        有時我們希望線程可以返回可用的變量,Java5 的 Callable 就可用于這種情況,類似 Runnable 接口,我們可以使用 Executor 框架之星這些任務。

        FutureTask 類是實現 Future 接口的基礎類。 使用帶 Callable 的實現和 Executors 的 FutureTask 進行異步處理。 FutureTask 提供的實施方法來檢查任務的狀態,一旦執行結束,立刻將值返回給調用程序。覆寫某些 Future 接口的實現方法是非常方便的。

        Java FutureTask 實例(FutureTask Example)

        該系列將隨著更多線程教程文章的發表而持續增加,所以請保存為書簽,以備將來需要。 請讓通知我們是否遺漏了你想學習的指示。

        翻譯: ImportNew.com - liken

        譯文鏈接: http://www.importnew.com/9994.html

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!