Java併發基礎知識你知道多少?

併發html

https://blog.csdn.net/justloveyou_/article/details/53672005java

  • 併發的三個特性是什麼?
  • 什麼是指令重排序?
  • 單線程的指令重排序靠什麼保證正確的結果?
  • 原子性操做有哪些?
  • 賦值操做都屬於原子性操做嗎?
  • sychronized和lock如何保證可見性?

synchronized緩存

https://www.cnblogs.com/paddix/p/5367116.html多線程

https://blog.csdn.net/justloveyou_/article/details/54381099併發

  • synchronized 實現原理
  • 爲何通常不用string做爲鎖

內存模型jvm

https://blog.csdn.net/justloveyou_/article/details/53672005oop

  • 什麼是緩存一致性問題?
  • 緩存一致性協議原理?
  • 線程工做內存與主存同步的時機?
  • println()爲何和volatile,sychronize同樣均可以作到上述同步?

volatile優化

https://blog.csdn.net/justloveyou_/article/details/53672005.net

http://ifeve.com/volatile/線程

  • 保證了併發的哪一個特性?
  • 做用?
  • 原理?
  • 應用場景?
  • 變量多個線程讀寫原則是什麼?
  • volatile能夠保證原子性嗎?
  • volatile容許指令重排序嗎?

 

threadLocal

https://blog.csdn.net/justloveyou_/article/details/54613085

https://slnddd.iteye.com/blog/2373374

https://blog.csdn.net/u013735511/article/details/70416597

  • 什麼是ThreadLocal
  • 原理是什麼?
  • ThreadLocalMap的key和value分別是什麼?
  • 應用場景?
  • 使用步驟?
  • Thread中使用Looper與Thread關聯
  • Thread和局部變量的區別?

 ThreadLocal內存泄漏

http://www.javashuo.com/article/p-gnmfimao-bo.html

爲何threadLocal會內存泄漏?

怎麼解決? 

 

http://ifeve.com/java-synchronized/

  • 什麼是CAS?
  • 對於同步方法,同步靜態方法,同步對象,鎖的對象分別是什麼?
  • jvm角度分析鎖同步的原理。用什麼方法,取得什麼的全部權?
  • 鎖的四種狀態或者類型?
  • 什麼是自旋和膨脹?

偏向鎖

  • 競爭機制?
  • 得到和撤銷流程?
  • 使用場景?

輕量級鎖

  • 競爭機制?
  • 得到和撤銷流程?
  • 使用場景?

Lock

相比於synchronized的三個優勢?

相比於synchronized的兩個要注意的地方?

使用locks時如何處理異常?

trylock()的使用?

lockInterruptibly()和synchronized的interrupt()的區別?

lock變量做爲線程局部變量有用嗎?

tryLock()和tryLock(time), lockInterruptibly()的區別?

若是lock()或者lockInterruptibly()放在try{}裏面會怎麼樣?

ReentrantLock繼承了什麼接口?

ReentrantReadWriteLock使用方法?

一個線程佔了讀鎖,另外一個線程申請寫鎖會怎麼樣?

一個線程佔了寫鎖,另外一個線程申請讀鎖會怎麼樣?

ReentrantReadWriteLock和synchronized的區別?

什麼是公平鎖和非公平鎖?

 

線程

Java多線程系列--「基礎篇」01之 基本概念

  • 線程的五個狀態調度圖?
  • blocked的三種狀況?
  • run和start區別?

 https://blog.csdn.net/justloveyou_/article/details/54347954

  • 什麼是線程的上下文切換?
  • 上下文切換時一般須要保存哪些東西?

 

notify, wait, yield, join

java - 線程等待與喚醒

Java - 線程讓步和休眠

Java - 線程Join與interrupt

  • wait是使哪一個線程等待?
  • notify和wait爲何定義在object中而不是thread中?
  • yield讓出的是什麼?
  • yield和wait的區別?
  • join的做用?
  • 爲何son.join()是讓主線程等待?
  • wait yield, sleep會釋放鎖碼?

interrupt

Java多線程系列--「基礎篇」09之 interrupt()和線程終止方式

  • 做用?
  • interrupt阻塞狀態線程過程?
  • 如何停止while(true)的線程?
  • interrupt運行狀態線程過程?
  • interrupted()和isinterrupted()區別?

守護線程定義?

Java - 線程優先級和守護線程

 

線程池 ThreadPoolExecutor

Java - "JUC線程池" ThreadPoolExecutor原理解析

  • 類結構?
  • worker做用?
  • blockingQueue做用?
  • 四種blockingQueue區別?
  • mainlock做用?
  • corePool和maxPool處理邏輯?
  • handler做用?
  • 線程池的五個狀態?
  • stop和shutdown區別?
  • 如何合理地配置線程池

線程拒絕策略

http://www.cnblogs.com/skywang12345/p/3512947.html#a21

  • abort, discard, discardoldest, callerruns區別
  • 適用場景?

callable和future

Java多線程系列--「JUC線程池」06之 Callable和Future

  • callable做用與用法?
  • future做用與用法?
  • callable與runable區別?
  • futuretask與他們的關係?
  • 他們的源碼實現?

 

CAS是什麼?

http://www.javashuo.com/article/p-gnmfimao-bo.html

什麼是ABA問題?怎麼解決?

 

鎖優化

http://www.javashuo.com/article/p-gnmfimao-bo.html

自旋是什麼?爲何要自旋?

鎖粗化是什麼?爲何要這樣?

偏向鎖是什麼?

鎖消除是什麼?

相關文章
相關標籤/搜索