日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

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

新聞中心

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

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

在寧波等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎ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 的吞吐率,通常會(huì)通過亂序技術(shù)把“無關(guān)”的指令在不同流水線上。
  • 層次化存儲(chǔ),為了綜合訪問存儲(chǔ)的速度、容量、價(jià)格,現(xiàn)代計(jì)算機(jī)通常采用 Cache、主存、外存的層次化存儲(chǔ)。

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

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

  • 加鎖,鎖可以讓亂序變的有序;鎖還可以觸發(fā)“回寫”,讓 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。

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


本文名稱:一分鐘理解線程安全
本文來源:http://www.5511xx.com/article/djsechj.html