【Java多線程與併發】知識點整理(追加中)

前言:文章中只羅列出知識點問題,並不提供對應的答案,僅僅作爲檢驗自己是否對某個知識點存在空缺或遺忘,答案請自行Google
Java多線程入門級書籍推薦:《Java多線程編程核心技術》

2018年3月4日記錄:

一.簡述 volatile 關鍵字
- a.內存屏障
- b.使用 volatile 關鍵字的場景

二.簡述Java內存模型(非Java虛擬機內存模型)
- a.volatile關鍵字
- b.原子性(注意在64位下的long和double)、可見性、有序性
- c.happens-before原則(先行發生原則)

三.Java中的同步容器(非併發容器)和缺陷
- a.同步容器主要包括兩類
- b.缺陷:性能、異常

四.CopyOnWriteArrayList的實現原理
- a.讀/寫
- b.性能缺陷
- c.優點

五.Java 中堆和棧有什麼不同(以線程的方向來回答)

六.Java 中的死鎖、飢餓、活鎖
- a.死鎖與活鎖的區別
- b.如何避免活鎖

七.線程池!!!
- a.什麼是線程池
- b.使用線程池的好處
- c.線程池的工作原理
- d.Executor接口/ExecutorService接口/AbstractExecutorService 抽象類
- e.Executors類
- f.ThreadPoolExecutor類,構造參數,BlockingQueue的類型、RejectedExecutionHandler處理失敗任務的四種策略
- g.execute和submit的區別
- h.shutdown()和shutdownNow()的區別
- i.線程池的注意事項
- j.簡單線程池的設計
- k.如何合理的配置 java 線程池?如 CPU 密集型的任務,基本線程池
應該配置多大?IO 密集型的任務,基本線程池應該配置多大?用有界
隊列好還是無界隊列好?任務非常多的時候,使用什麼阻塞隊列能獲取
最好的吞吐量?

八.阻塞隊列
- a.ArrayBlockingQueue 和 LinkedBlockingQueue 的區別
- b.DelayQueue與SynchronousQueue

九.什麼是CAS,優缺點
- a.同步鎖的分類
- b.鎖的分類
- c.Java中的悲觀鎖與樂觀鎖

十.Java中實現多線程的四種方式
- a.Thread類/Runnable接口/Callable接口/線程池
- b.Runnable和Callable有什麼不同

十一.實現多線程的同步
- a.synchronized的用法
- b.Lock的用法
- c.volatile和synchronized區別
- d.什麼場景下可以使用volatile替換synchronized

十二.實現線程之間的通信
- a.Object類中wait()\notify()\notifyAll()
- b.Condition接口
- c.管道實現線程間的通信(闡述其缺點)

十三.如何確保線程安全

十四.多線程的優點和缺點

十五.wait()和sleep()的區別
- a.join(),notify(),notifyAll()

十六.Java中interrupted()和isInterrupted()的區別

十七.Java創建線程後,直接調用start()方法和run()的區別

十八.什麼是線程的上下文切換

十九.用戶線程和守護線程有什麼區別

二十.線程的狀態

二十一.Java程序如何停止一個線程

二十二.ThreaLocal的作用及其原理

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章