前面講到使用Account.class作為互斥鎖,來解決銀行業(yè)務(wù)里面的轉(zhuǎn)賬問題,雖然這個(gè)方法不存在并發(fā)問題,但是所有賬戶的轉(zhuǎn)賬操作都是串行的.例如賬戶A轉(zhuǎn)賬戶B,賬戶C轉(zhuǎn)帳戶...
前面講到使用Account.class作為互斥鎖,來解決銀行業(yè)務(wù)里面的轉(zhuǎn)賬問題,雖然這個(gè)方法不存在并發(fā)問題,但是所有賬戶的轉(zhuǎn)賬操作都是串行的.例如賬戶A轉(zhuǎn)賬戶B,賬戶C轉(zhuǎn)帳戶...
受保護(hù)資源和鎖之間合理的關(guān)聯(lián)關(guān)系應(yīng)該是 N:1 的關(guān)系,也就是說可以用一把鎖來保護(hù)多個(gè)資源,但是不能用多把鎖來保護(hù)一個(gè)資源. 當(dāng)我們要保護(hù)多個(gè)資源時(shí),首先要區(qū)分這些資源是否存...
一個(gè)或多個(gè)操作在CPU執(zhí)行的過程中不被中斷的特性.稱為"原子性".理解這個(gè)特性有助于你分析并發(fā)編程 Bug 出現(xiàn)的原因豹障,例如利用它可以分析出 long 型變量在 32 位機(jī)器...
什么是java內(nèi)存模型? 導(dǎo)致可見性的原因是緩存,導(dǎo)致有序性的原因是編譯優(yōu)化,那解決可見性,有序性最直接的辦法就是禁用緩存和編譯優(yōu)化,但是這樣問雖然解決了,我們程序的性能可就...
Tomcat 總體架構(gòu) 我們知道如果要設(shè)計(jì)一個(gè)系統(tǒng),首先是要了解需求,我們已經(jīng)了解了Tomcat要實(shí)現(xiàn)2個(gè)核心功能: 處理Socket連接,負(fù)責(zé)網(wǎng)絡(luò)字節(jié)流與Request和R...
瀏覽器發(fā)給服務(wù)端的是一個(gè)HTTP格式的請(qǐng)求,HTTP服務(wù)器收到這個(gè)請(qǐng)求后,需要調(diào)用服務(wù)端程序來處理,所謂的服務(wù)端程序就是你寫的java類,一般來說不同的請(qǐng)求需要不同的java...
HTTP 和 HTML 有什么區(qū)別? 為什么會(huì)問這個(gè)問題?你可以把它當(dāng)作一個(gè)入門測(cè)試,檢測(cè)一下自己的對(duì)HTTP協(xié)議的理解.因?yàn)門omcat和Jetty本身就是一個(gè)"HTTP服...
提到事務(wù)嚼蚀,你肯定不陌生,和數(shù)據(jù)庫打交道的時(shí)候管挟,我們總是會(huì)用到事務(wù)轿曙。最經(jīng)典的例子就是轉(zhuǎn)賬,你要給朋友小王轉(zhuǎn) 100 塊錢僻孝,而此時(shí)你的銀行卡只有 100 塊錢导帝。 轉(zhuǎn)賬過程具體到程...