ReentrantLock是如何實現可重入性的? 2022-09-20
一個線程持有鎖時,當其他線程嘗試獲取該鎖時,會被阻塞;而這個線程嘗試獲取自己持有鎖時,如果成功說明該鎖是可重入的,反之則不可重入。詳情>
synchronized和ReentrantLock的異同點 2022-09-20
兩者最大的區別就是synchronized是Java內置的關鍵字,是原生語法層面的互斥,是JVM層面的同步機制。而ReentrantLock是JDK5之后提供的API層面的...詳情>
樂觀鎖一定就是好的嗎? 2022-09-20
樂觀鎖認為對一個對象的操作不會引發沖突,所以每次操作都不進行加鎖,只是在最后提交更改時驗證是否發生沖突,如果沖突則再試一遍,直至成功...詳情>
請談談volatile有什么特點,為什么它能保證變量對所有線程的可見性? 2022-09-20
主內存和工作內存之間的交互分為8個原子操作:- lock - unlock - read - load - assign - use - store - write - volatile修飾的變量,只有對v...詳情>
Thread類中的yield方法有什么作用? 2022-09-20
yield()應該做的是讓當前運行線程回到可運行狀態,以允許具有相同優先級的其他線程獲得運行機會。 因此,使用yield()的目的是讓相同優先級的...詳情>
Java如何實現多線程之間的通訊和協作? 2022-09-20
比如說最經典的生產者-消費者模型:當隊列滿時,生產者需要等待隊列有空間才能繼續往里面放入商品,而在等待的期間內,生產者必須釋放對臨界資...詳情>
為什么wait(), notify()和 notifyAll()必須在同步方法或者同步塊中被調用? 2022-09-20
Java中,任何對象都可以作為鎖,并且 wait(),notify()等方法用于等待對象的鎖或者喚醒線程,在 Java 的線程中并沒有可供任何對象使用的鎖,所...詳情>
什么是CAS 2022-09-20
synchronized是一種悲觀鎖,會導致其它所有需要鎖的線程掛起,等待持有鎖的線程釋放鎖。樂觀鎖就是不加鎖而是假設沒有沖突而去完成某項操作,...詳情>
多線程中synchronized鎖升級的原理是什么? 2022-09-20
synchronized鎖升級原理: 在鎖對象的對象頭里面有一個threadid字段,在次訪問的時候threadid為空,jvm讓其持有偏向鎖,并將threadid設置為其...詳情>
請談談ThreadLocal是怎么解決并發安全的? 2022-09-20
一種是sychronized方式,通過鎖機制,一個線程執行時,讓另一個線程等待,是以時間換空間的方式來讓多線程串行執行。而另外一種方式就是Thread...詳情>
在線提問
專業導師線上坐鎮,解答個性化學習難題
提交問題