av激情亚洲男人的天堂国语,日韩欧美精品一中文字幕,无码av一区二区三区无码,国产又色又爽又刺激的a片,国产又色又爽又刺激的a片

一分鐘理解線程安全

線程安全也叫可重入,是指一段代碼(類、函數(shù))可以在多線程情況下正常工作。

在寧波等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)、外貿(mào)營銷網(wǎng)站建設(shè) 網(wǎng)站設(shè)計(jì)制作定制設(shè)計(jì),公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),成都品牌網(wǎng)站建設(shè),全網(wǎng)營銷推廣,成都外貿(mào)網(wǎng)站建設(shè),寧波網(wǎng)站建設(shè)費(fèi)用合理。

線程安全之所以成為問題是由于:

  • 亂序執(zhí)行,為了提高 CPU 的吞吐率,通常會通過亂序技術(shù)把“無關(guān)”的指令在不同流水線上。
  • 層次化存儲,為了綜合訪問存儲的速度、容量、價格,現(xiàn)代計(jì)算機(jī)通常采用 Cache、主存、外存的層次化存儲。

歸根結(jié)底:CPU 太快,存儲太慢,特別是多核、多處理器技術(shù)讓 CPU 更快——問題也更加凸出。

讓一個類或者函數(shù)線程安全有兩種方法:

  • 加鎖,鎖可以讓亂序變的有序;鎖還可以觸發(fā)“回寫”,讓 Cache 和內(nèi)存保持一致;
  • 復(fù)制,每個線程一份數(shù)據(jù),不共享數(shù)據(jù);

實(shí)例

Java 中的synchronized關(guān)鍵字會為方法增加一個鎖,increase現(xiàn)在是線程安全的,多線程調(diào)用時鎖會把并行變成串行。

每個線程都有一個自己的CounterService彼此之間不存在數(shù)據(jù)共享。

擴(kuò)展

Spring MVC 中的 Controller 在 BeanFactory 啟動的時候被實(shí)例化,對于一個 Controller 而言在整個系統(tǒng)中只有一個實(shí)例。所以定義在 Controller 中的成員變量是線程不安全的,比如下面的代碼是錯誤的:

正確的做法應(yīng)該是:

為方法增加鎖

或者

利用@Scope 注解讓 Spring MVC 每次接到新請求時都重新 new 一個 Controller。

【本文是專欄作者“邢森”的原創(chuàng)文章,轉(zhuǎn)載請聯(lián)系作者本人獲取授權(quán)】


當(dāng)前題目:一分鐘理解線程安全
鏈接URL:http://uogjgqi.cn/article/djsechj.html
掃二維碼與項(xiàng)目經(jīng)理溝通

我們在微信上24小時期待你的聲音

解答本文疑問/技術(shù)咨詢/運(yùn)營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流