金華IT培訓
美國上市IT培訓機構

4008270010

熱門課程

Java程序員多線程學習指南

  • 時間:2020-06-08 14:16
  • 發布:杭州
  • 來源:知識庫

我們都知道多線程應該是大部分 Java 程序員最難啃的一塊骨頭之一,這部分內容的難度跨度大,難實踐,并且市面上的參考資料的質量也層次不齊

相比于寫技術文章來說,寫這種這種類型的文章實際花費的時間可能會稍微少一點。但是,這種學習指南形式的文章,我想對于 Java 初學者甚至是工作幾年的 Java 工程師來說應該還是非常有幫助的!

Java程序員多線程學習指南

1.1.多線程基礎什么是線程和進程? 線程與進程的關系,區別及優缺點?

說說并發與并行的區別?

為什么要使用多線程呢?

使用多線程可能帶來什么問題?(內存泄漏、死鎖、線程不安全等等)

創建線程有哪幾種方式?(a.繼承 Thread 類;b.實現 Runnable 接口;c. 使用 Executor 框架;d.使用 FutureTask)

說說線程的生命周期和狀態?

什么是上下文切換?

什么是線程死鎖?如何避免死鎖?

說說 sleep() 方法和 wait() 方法區別和共同點?

為什么我們調用 start() 方法時會執行 run() 方法,為什么我們不能直接調用 run() 方法?

1.2.多線程知識進階volatile 關鍵字

Java 內存模型(JMM);

重排序與 happens-before 原則了解嗎?

volatile 關鍵字的作用;

說說 synchronized 關鍵字和 volatile 關鍵字的區別;

ThreadLocal

有啥用(解決了什么問題)?怎么用?

原理了解嗎?

內存泄露問題了解嗎?

線程池

為什么要用線程池?

你會使用線程池嗎?

如何創建線程池比較好?(推薦使用 ThreadPoolExecutor 構造函數創建線程池)

ThreadPoolExecutor 類的重要參數了解嗎?ThreadPoolExecutor 飽和策略了解嗎?

線程池原理了解嗎?

幾種常見的線程池了解嗎?為什么不推薦使用FixedThreadPool?

如何設置線程池的大???

AQS

簡介

原理

AQS 常用組件。

Semaphore(信號量)-允許多個線程同時訪問

CountDownLatch (倒計時器)-CountDownLatch 允許 count 個線程阻塞在一個地方,直至所有線程的任務都執行完畢。

CyclicBarrier(循環柵欄)-CyclicBarrier 和 CountDownLatch 非常類似,它也可以實現線程間的技術等待,但是它的功能比 CountDownLatch 更加復雜和強大。主要應用場景和 CountDownLatch 類似。

ReentrantLock 和 ReentrantReadWriteLock

鎖的常見分類

可重入鎖和非可重入鎖

公平鎖與非公平鎖

讀寫鎖和排它鎖

synchronized 關鍵字

說一說自己對于 synchronized 關鍵字的了解;

說說自己是怎么使用 synchronized 關鍵字,在項目中用到了嗎;

講一下 synchronized 關鍵字的底層原理;

說說 JDK1.6 之后的 synchronized 關鍵字底層做了哪些優化,可以詳細介紹一下這些優化嗎;

談談 synchronized 和 ReentrantLock 的區別;

ReentrantLock 和 ReentrantReadWriteLock

ReadWriteLock

StampedLock(JDK8)

Atomic 與 CAS

CAS:

介紹

原理

Atomic 原子類:

介紹一下 Atomic 原子類;

JUC 包中的原子類是哪 4 類?;

講講 AtomicInteger 的使用;

能不能給我簡單介紹一下 AtomicInteger 類的原理。

并發容器

JDK 提供的這些容器大部分在 java.util.concurrent 包中。

ConcurrentHashMap: 線程安全的 HashMap

CopyOnWriteArrayList: 線程安全的 List,在讀多寫少的場合性能非常好,遠遠好于 Vector.

ConcurrentLinkedQueue: 高效的并發隊列,使用鏈表實現??梢钥醋鲆粋€線程安全的 LinkedList,這是一個非阻塞隊列。

BlockingQueue: 這是一個接口,JDK 內部通過鏈表、數組等方式實現了這個接口。表示阻塞隊列,非常適合用于作為數據共享的通道。

ConcurrentSkipListMap: 跳表的實現。這是一個 Map,使用跳表的數據結構進行快速查找。

以上內容是關于Java多線程知識點總結希望對于正在學習Java的你有所幫助,或者你打算學習Java可以來達內參加Java培訓班免費試聽課程。

免責聲明:內容來源于網絡,若涉及侵權聯系盡快刪除!

預約申請免費試聽課

怕錢不夠?就業掙錢后再付學費!    怕學不會?從入學起,達內定制課程!     擔心就業?達內多家實踐企業供你挑選!

上一篇:Java培訓課程體系
下一篇:各種版本的Python下載安裝教程

Java程序員多線程學習指南

Java培訓課程體系

參加Java培訓有無基礎重要嗎?

零基礎學習Java怎么學

選擇城市和中心
江西省

貴州省

廣西省

海南省

粉嫩入口处粗黑进进出出