最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java并發(fā)編程實例分析

 更新時間:2019年03月01日 10:33:05   投稿:laozhang  
在本文里我們給大家分享了關(guān)于java并發(fā)編程實例分析以及相關(guān)知識點,需要的朋友們學習下。

java并發(fā)編程是java程序設(shè)計語言的一塊重點,在大部分的業(yè)務場景中都需要并發(fā)編程。

比如:并發(fā)的去處理http請求,這樣就可以使得一臺機器同時處理多個請求,大大提高業(yè)務的響應效率,從而使用用戶體驗更加流暢。

java如何并發(fā)編程,要注意以下幾個方面:

1、java語言中的多線程操作:創(chuàng)建和啟動線程的幾種方式。

2、共享變量的同步問題,要保證線程安全,辨別哪些變量是線程安全的、那些變量是線程不安全的,對于不安全的變量我們要想辦法讓其同步,一般也就是加鎖。

3、線程鎖:包括方法鎖和synchronized塊的使用。

接下來就詳細說一下這幾個方面。

首先說創(chuàng)建線程的方式:一般有兩種方式

定義一個線程類:實現(xiàn)Runnable接口、或者繼承Thread,推薦是實現(xiàn)接口的方式。

啟動線程的方式:

第一種:new Thread()的方式。

創(chuàng)建好的線程,然后通過new的方式啟動線程,因為創(chuàng)建方式的不同,他們啟動的方式也略微有些差別。

第二種:通過線程池的方式啟動線程。JavaAPI提供了線程池技術(shù),可以用池的原理,

去管理線程,池的技術(shù)在java中很常見,比如數(shù)據(jù)庫連接池等。

具體細節(jié)可以參考如下的連接:

共享變量的問題:要明白什么變量最有可能出現(xiàn)線程安全問題。沒錯就是靜態(tài)變量,靜態(tài)變量

相當于C語言的全局變量,如果是public類型,誰都可以修改,所以這個時候就會出現(xiàn)

變量的線程安全問題。當然了私有變量也可能出現(xiàn)線程安全問題。

具體細節(jié)可以參考如下的連接:

主要來說一下線程鎖的兩種方式:

(1)首先定義一個MyBusiness類,此類中頂一個一個靜態(tài)變量i,和一個靜態(tài)方法,靜態(tài)方法的功能是讓i加1。

(2)然后定義一個線程類MyThread2,run方法中先讓線程sleep 2毫秒,然后執(zhí)行加1操作。

(3)定義測試類,測試類創(chuàng)建6000個MyThread2線程,然后sleep 1秒鐘,執(zhí)行輸出,顯示i的值。

(4)結(jié)果:從結(jié)果可以看出,此時出現(xiàn)了線程安全問題,就是說某些線程在加1操作時取到了臟數(shù)據(jù),即

在某一個時間點,多個線程同時取到了某個相同的i值,然后去修改,結(jié)果導致在這幾個線程中,只有最后一個

修改生效,而其他的則被覆蓋掉了。

(5)解決方案一:方法鎖,給add方法加鎖,表示同一時間只能有一個方法的調(diào)用被允許運行,其他的線程等待鎖的釋放。

再次運行,發(fā)現(xiàn)變成了6000就是正確的了。

(6)解決方案二:synchronized代碼塊,我們重新定義一個方法add1,然后用synchronized代碼塊鎖上MyBusiness類,

表示同一時間只能有一個線程操作MyBusiness類,其他線程必須等待鎖的釋放。

(7)查看結(jié)果,也得到了正確的輸出。

相關(guān)文章

  • 詳解IntelliJ IDEA2020.1和JDK14體驗

    詳解IntelliJ IDEA2020.1和JDK14體驗

    這篇文章主要介紹了詳解IntelliJ IDEA2020.1和JDK14體驗,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-05-05
  • SpringBoot實現(xiàn)熱部署的方式總結(jié)

    SpringBoot實現(xiàn)熱部署的方式總結(jié)

    所謂熱部署,就是在應用正在運行的時候升級軟件,卻不需要重新啟動應用,對于Java來說,熱部署就是在運行時更新Java類文件,本文將深入探討SpringBoot有哪些方式可以實現(xiàn)熱部署,感興趣的朋友可以小編一探討學習
    2023-06-06
  • 教你怎么在win10環(huán)境下安裝jdk8

    教你怎么在win10環(huán)境下安裝jdk8

    今天教大家怎么在win10環(huán)境下安裝jdk8,文中有非常詳細的圖文示例,對想要安裝win10的小伙伴們很有幫助,需要的朋友可以參考下
    2021-05-05
  • java的SimpleDateFormat線程不安全的幾種解決方案

    java的SimpleDateFormat線程不安全的幾種解決方案

    但我們知道SimpleDateFormat是線程不安全的,處理時要特別小心,要加鎖或者不能定義為static,要在方法內(nèi)new出對象,再進行格式化,本文就介紹了幾種方法,感興趣的可以了解一下
    2021-08-08
  • 自定義注解實現(xiàn)Spring容器注入Bean方式(類似于mybatis的@MapperScans)

    自定義注解實現(xiàn)Spring容器注入Bean方式(類似于mybatis的@MapperScans)

    本文介紹了如何通過自定義注解@MyService和@MyServiceScans在SpringBoot項目中自動將指定包下的類注入Spring容器,詳細解釋了創(chuàng)建自定義注解、定義包掃描器ClassPathBeanDefinitionScanner的作用與實現(xiàn)
    2024-09-09
  • SpringBoot自定義MessageConverter與內(nèi)容協(xié)商管理器contentNegotiationManager詳解

    SpringBoot自定義MessageConverter與內(nèi)容協(xié)商管理器contentNegotiationManag

    這篇文章主要介紹了SpringBoot自定義MessageConverter與內(nèi)容協(xié)商管理器contentNegotiationManager的使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧
    2022-10-10
  • JavaWeb實現(xiàn)學生管理系統(tǒng)的超詳細過程

    JavaWeb實現(xiàn)學生管理系統(tǒng)的超詳細過程

    學生信息管理系統(tǒng)是針對學校人事處的大量業(yè)務處理工作而開發(fā)的管理軟件,主要用于學校學生信息管理,下面這篇文章主要給大家介紹了關(guān)于JavaWeb實現(xiàn)學生管理系統(tǒng)的超詳細過程,需要的朋友可以參考下
    2023-05-05
  • Java阻塞隊列BlockingQueue基礎(chǔ)與使用

    Java阻塞隊列BlockingQueue基礎(chǔ)與使用

    本文詳細介紹了BlockingQueue家庭中的所有成員,包括他們各自的功能以及常見使用場景,通過實例代碼介紹了Java 阻塞隊列BlockingQueue的相關(guān)知識,需要的朋友可以參考下
    2023-01-01
  • Java線程的停止實現(xiàn)原理詳解

    Java線程的停止實現(xiàn)原理詳解

    這篇文章主要介紹了Java線程的停止實現(xiàn)原理,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧
    2023-01-01
  • 在spring中實例化bean無效的問題

    在spring中實例化bean無效的問題

    這篇文章主要介紹了在spring中實例化bean無效的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-02-02

最新評論

泸州市| 通江县| 宁都县| 鲜城| 理塘县| 额济纳旗| 南木林县| 南通市| 商丘市| 利津县| 泉州市| 灌阳县| 莲花县| 栾川县| 海阳市| 铜鼓县| 广饶县| 怀宁县| 南皮县| 奎屯市| 白玉县| 南澳县| 崇礼县| 安多县| 遂溪县| 永吉县| 白玉县| 昔阳县| 海南省| 东安县| 漠河县| 隆德县| 桐柏县| 阿荣旗| 苍山县| 塔城市| 舟山市| 玛曲县| 曲沃县| 沂南县| 建湖县|