首先理解cas是 一種併發的無鎖機制
每次都先把當前執行緒獲得的a儲存起來
執行緒就在執行嘛 所以要再比較一下現在的記憶體中最新的a(value)cas必須依賴volatile actomicinteger中封裝的value變數就是volatile的
和我當初儲存起來的a(prev)是否相等compareandset(preva,updateb)是boolean的
如果相等就說明沒有變 那就可以對a操作更新為b 如果變了說明已經被修改了 那就不能操作 就繼續迴圈cas使用while(true)
這樣保證了執行緒的獨佔的感覺 只有復合鎖的感覺 才進行操作
是一種變相用鎖機制的情形
無所狀態適合執行緒少 cpu多的 因為無所狀態不會導致執行緒被阻塞 再cpu的時間片未到之前 執行緒都不會產生上下文切換 所以說執行緒少 cpu多喝適合cas因為不會頻繁的時間片到時 切換
執行緒多的時候就是和鎖
不怕別人改共享變數 我很樂觀
無鎖----變數改了就不斷重試
無阻塞----不會被阻塞
CAS學習一 CAS服務端部署
公司要做單點登入系統,網上搜了一下目前主流方案是cas,故部署乙個試試看。因為最近出現log4j2遠端 執行漏洞,盡量選擇新版本已修復此漏洞的,故cas選擇6.4版本。打包部署依賴jdk 11,gradle,tomcat。此處選擇gradle 7.3.3,tomcat 8.5.73。2 解壓grad...
CAS學習筆記四 CAS單點登出流程
cas 的登出包含兩種情況,一種是cas客戶端登出,另一種是cas單點登出,使用流程圖說明這兩者的不同。一圖勝千言 總結自官方文件 如圖,客戶端的登出僅僅是過期當前使用者與客戶端之間的會話,並未過期使用者瀏覽器與cas服務端建立的會話 沒有處理tgc 此時如果使用者再訪問客戶端的介面,無需輸入賬號密...
Cas(單點登入框架)的學習筆記
cas基本流程功能圖 1.訪問web one應用 2.是否有ticket?3.沒有就重定向到登入介面。在client中的web.xml檔案配置 casfilterfilter name edu.yale.its.tp.cas.client.filter.casfilterfilter class e...