CTS算法?
這些線程安全類底層實現使用一種稱為CAS的算法,(Compare And Swap)比較交換。其實現方式是基于硬件平臺的匯編指令,在intel的CPU中,使用的是cmpxchg指令,也就是說CAS是靠硬件實現的,從而在硬件層面提升效率。樂觀鎖,總是認為是線程安全的,不怕別的線程修改變量,如果修改了我就再重新嘗試。悲觀鎖:總是認為線程不安全,不管什么情況都進行加鎖,要是獲取鎖失敗,就阻塞。
優點這個算法相對synchronized是比較“樂觀的”,它不會像synchronized一樣,當一個線程訪問共享數據的時候,別的線程都在阻塞。synchronized不管是否有線程沖突都會進行加鎖。由于CAS是非阻塞的,它死鎖問題天生免疫,并且線程間的相互影響也非常小,更重要的是,使用無鎖的方式完全沒有鎖競爭帶來的系統開銷,也沒有線程間頻繁調度帶來的開銷,所以它要比鎖的方式擁有更優越的性能。
實現思想在線程開啟的時候,會從主存中給每個線程拷貝一個變量副本到線程各自的運行環境中,CAS算法中包含三個參數(V,E,N),V表示要更新的變量(也就是從主存中拷貝過來的值)、E表示預期的值、N表示新值。