好程序員Java培訓(xùn)分享Java多線程學(xué)習(xí),Java程序員多線程學(xué)習(xí)。 1.1.多線程基礎(chǔ)什么是線程和進程? 線程與進程的關(guān)系,區(qū)別及優(yōu)缺點? 說說并發(fā)與并行的區(qū)別? 為什么要使用多線程呢? 使用多線程可能帶來什么問題?(內(nèi)存泄漏、死鎖、線程不安全等等) 創(chuàng)建線程有哪幾種方式?(a.繼承 Thread 類;b.實現(xiàn) Runnable 接口;c. 使用 Executor 框架;d.使用 FutureTask) 說說線程的生命周期和狀態(tài)? 什么是上下文切換? 什么是線程死鎖?如何避免死鎖? 說說 sleep() 方法和 wait() 方法區(qū)別和共同點? 為什么我們調(diào)用 start() 方法時會執(zhí)行 run() 方法,為什么我們不能直接調(diào)用 run() 方法? 1.2.多線程知識進階volatile 關(guān)鍵字 Java 內(nèi)存模型(JMM); 重排序與 happens-before 原則了解嗎? volatile 關(guān)鍵字的作用; 說說 synchronized 關(guān)鍵字和 volatile 關(guān)鍵字的區(qū)別; ThreadLocal 有啥用(解決了什么問題)?怎么用? 原理了解嗎? 內(nèi)存泄露問題了解嗎? 線程池 為什么要用線程池? 你會使用線程池嗎? 如何創(chuàng)建線程池比較好?(推薦使用 ThreadPoolExecutor 構(gòu)造函數(shù)創(chuàng)建線程池) ThreadPoolExecutor 類的重要參數(shù)了解嗎?ThreadPoolExecutor 飽和策略了解嗎? 線程池原理了解嗎? 幾種常見的線程池了解嗎?為什么不推薦使用FixedThreadPool? 如何設(shè)置線程池的大?。?/p> AQS 簡介 原理 AQS 常用組件。 Semaphore(信號量)-允許多個線程同時訪問 CountDownLatch (倒計時器)-CountDownLatch 允許 count 個線程阻塞在一個地方,直至所有線程的任務(wù)都執(zhí)行完畢。 CyclicBarrier(循環(huán)柵欄)-CyclicBarrier 和 CountDownLatch 非常類似,它也可以實現(xiàn)線程間的技術(shù)等待,但是它的功能比 CountDownLatch 更加復(fù)雜和強大。主要應(yīng)用場景和 CountDownLatch 類似。 ReentrantLock 和 ReentrantReadWriteLock 鎖 鎖的常見分類 可重入鎖和非可重入鎖 公平鎖與非公平鎖 讀寫鎖和排它鎖 synchronized 關(guān)鍵字 說一說自己對于 synchronized 關(guān)鍵字的了解; 說說自己是怎么使用 synchronized 關(guān)鍵字,在項目中用到了嗎; 講一下 synchronized 關(guān)鍵字的底層原理; 說說 JDK1.6 之后的 synchronized 關(guān)鍵字底層做了哪些優(yōu)化,可以詳細介紹一下這些優(yōu)化嗎; 談?wù)?/span> synchronized 和 ReentrantLock 的區(qū)別; ReentrantLock 和 ReentrantReadWriteLock ReadWriteLock StampedLock(JDK8) Atomic 與 CAS CAS: 介紹 原理 Atomic 原子類: 介紹一下 Atomic 原子類; JUC 包中的原子類是哪 4 類?; 講講 AtomicInteger 的使用; 能不能給我簡單介紹一下 AtomicInteger 類的原理。 并發(fā)容器 JDK 提供的這些容器大部分在 java.util.concurrent 包中。 ConcurrentHashMap: 線程安全的 HashMap CopyOnWriteArrayList: 線程安全的 List,在讀多寫少的場合性能非常好,遠遠好于 Vector. ConcurrentLinkedQueue: 高效的并發(fā)隊列,使用鏈表實現(xiàn)??梢钥醋鲆粋€線程安全的 LinkedList,這是一個非阻塞隊列。 BlockingQueue: 這是一個接口,JDK 內(nèi)部通過鏈表、數(shù)組等方式實現(xiàn)了這個接口。表示阻塞隊列,非常適合用于作為數(shù)據(jù)共享的通道。 ConcurrentSkipListMap: 跳表的實現(xiàn)。這是一個 Map,使用跳表的數(shù)據(jù)結(jié)構(gòu)進行快速查找。 |
|
來自: 好程序員IT > 《Java培訓(xùn)教程》