日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
一分鐘理解線程安全

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

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

線程安全之所以成為問(wèn)題是由于:

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

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

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

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

實(shí)例

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

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

擴(kuò)展

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

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

為方法增加鎖

或者

利用@Scope 注解讓 Spring MVC 每次接到新請(qǐng)求時(shí)都重新 new 一個(gè) Controller。

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


新聞標(biāo)題:一分鐘理解線程安全
文章URL:http://www.dlmjj.cn/article/djsechj.html