欧美色视频免费_2018亚洲男人天堂_好骚综合在线_久久久久久久久国产_日韩精品久久久久久久九岛_国产成年人视频

推廣 熱搜: 廣場  Java  app  Word  營業(yè)  微信公眾號  北京代理記賬  商城  代理記賬  商標(biāo)交易 

java程序cpu占用過高怎么找問題 如何編寫一個cpu占用率高的java程序?

   2023-04-26 企業(yè)服務(wù)招財貓250
核心提示:如何編寫一個cpu占用率高的java程序?多開幾個線程,每個線程都要花很長時間執(zhí)行。如何理解應(yīng)用Java多線程與并發(fā)編程?你好,我我很高興回答你的問題!下面是Java多線程和并發(fā)編程的詳細集成,希望對

如何編寫一個cpu占用率高的java程序?

多開幾個線程,每個線程都要花很長時間執(zhí)行。

如何理解應(yīng)用Java多線程與并發(fā)編程?

你好,我我很高興回答你的問題!下面是Java多線程和并發(fā)編程的詳細集成,希望對你有幫助!

一、多線程的三個特點多線程有三個特點:原子性、可見性和順序性。

原子性(類似于數(shù)據(jù)庫的事務(wù)特性中的原子性,數(shù)據(jù)庫的原子性體現(xiàn)在執(zhí)行后需要提交dml語句);

理解:即一個操作或多個操作要么全部執(zhí)行且在執(zhí)行過程中不會被任何因素中斷,要么都不執(zhí)行。

一個經(jīng)典的例子是銀行轉(zhuǎn)帳的問題:

例如,從賬戶A向賬戶B轉(zhuǎn)賬5000元,必須包括兩個操作:從賬戶A減去5000元,向賬戶B增加5000元..這兩個操作必須是原子性的,以確保不會出現(xiàn)意外問題。

我們的運營數(shù)據(jù)也是如此,比如III1包括讀取I的值,計算I,寫I,這一行代碼在Java中不是原子的,多線程肯定會出錯,所以我們需要使用synchronized和lock來保證這個特性。

原子性實際上是確保數(shù)據(jù)一致性和線程安全性一部分,

可見性:可見性與java內(nèi)存模型密切相關(guān)。

當(dāng)多個線程訪問同一個變量時,一個線程修改這個變量的值,其他線程可以立即看到修改后的值。

如果兩個線程在不同的CPU,那么線程1修改的I的值還沒有刷新到主存,線程2又使用了I,那么I的值一定和之前一樣,線程1沒有看到變量的修改,這就是可視性問題。

有序性:

理解:程序執(zhí)行的順序是按照代碼執(zhí)行的順序。

一般來說,為了提高程序的效率,處理器可能會對輸入代碼進行優(yōu)化。它不保證程序中每條語句的執(zhí)行順序與代碼中的一致,但會保證程序最終的執(zhí)行結(jié)果與代碼順序一致。

第二,java內(nèi)存模型jvm的內(nèi)存結(jié)構(gòu)是:堆、棧、方法區(qū),這和Java的內(nèi)存模型,這與多線程有關(guān)。

理解:共享內(nèi)存模型是指Java內(nèi)存模型(簡稱JMM),它決定了當(dāng)一個線程寫一個共享變量時,它可以被另一個線程看到。從抽象的角度來看,JMM定義了線程和主存的抽象關(guān)系:線程之間的共享變量存儲在主存中(局部變量不存儲在中),每個線程都有一個私有的局部內(nèi)存,其中存儲著共享變量的副本。本地記憶是JMM的一個抽象概念,并不真正存在。它涵蓋了緩存、寫緩沖區(qū),寄存器和其他硬件和編輯器優(yōu)化。

總結(jié):什么是java內(nèi)存模型?Java內(nèi)存模型簡稱jmm,定義一個線程對另一個線程可見。共享變量存儲在主存中,每個線程都有自己的本地內(nèi)存。當(dāng)多個線程同時訪問相同的數(shù)據(jù)時,本地內(nèi)存可能無法及時刷新到主存,所以會出現(xiàn)線程安全問題。

三、Volatile關(guān)鍵字Volatile關(guān)鍵字的作用:變量在多線程之間是可見的。

Volatile關(guān)鍵字是非原子的,它可以不能保證數(shù)據(jù)的原子性,但可以立即刷新內(nèi)存的解決方案,但可以無法解決并發(fā)問題。

如果要保證數(shù)據(jù)的原子性,解決并發(fā)問題,需要在包中使用和收縮AutomicInteger原子類。

易變和同步的區(qū)別:

Volatile本身并不能保證線程的安全性(原子性)。

1.volatile是輕量級的,只能修改變量。同步重量級,也可以修改方法。2.volatile只能保證數(shù)據(jù)的可見性,而cant用于同步,因為多個線程可以同時訪問用volatile修飾的變量,而不會阻塞。第四,TreadLocal1。什么是ThreadLocal?ThreadLocal改進了一個線程的局部變量,訪問一個線程有自己的局部變量。

使用ThreadLocal維護變量時,ThreadLocal為使用該變量的每個線程提供了該變量的獨立副本,因此每個線程可以獨立更改自己的副本,而不會影響其他線程的相應(yīng)副本。

有四種ThreadLocal接口方法:

Voidset(Objectvalue)設(shè)置當(dāng)前線程的線程局部變量的值;PublicObjectget()該方法返回當(dāng)前線程對應(yīng)的線程局部變量;Publicvoidremove()刪除當(dāng)前線程的局部變量的值是為了減少內(nèi)存占用,這是JDK5.0中的新方法,需要指出的是,當(dāng)線程結(jié)束時,線程對應(yīng)的局部變量會被自動垃圾回收,所以不需要顯式調(diào)用該方法來清除線程的局部變量,但可以加快內(nèi)存的回收;保護對象initialValue()返回線程局部變量的初始值。此方法是一個受保護的方法,顯然是為子類重寫而設(shè)計的。這個方法是一個延遲調(diào)用的方法,只在線程第一次調(diào)用get()或set(Object)時執(zhí)行,且只執(zhí)行一次。ThreadLocal中的默認實現(xiàn)直接返回null。底層實現(xiàn)原理:ThreadLocAl通過()獲取當(dāng)前線程

動作映射集合:ThreadLocalMap

空集合(對象值)是map.put("當(dāng)前線程和,值)。

公共對象get()是獲取ThreadLocalMap,操作后返回。

動詞(verb的縮寫)線程池1。為什么要使用線程池?

因為通過線程池管理線程需要大量資源,所以啟動或停止線程可以節(jié)省內(nèi)存。

一般情況下,我們在企業(yè)開發(fā)中都使用線程池,通過spring集成線程池,異步注釋。

2.什么是線程池?

線程池是指在初始化多線程應(yīng)用程序的過程中創(chuàng)建一組線程,然后在需要執(zhí)行新任務(wù)時重用這些線程,而不是創(chuàng)建一個新線程。線程池中的線程數(shù)量通常完全取決于可用內(nèi)存的數(shù)量和應(yīng)用程序的要求。但是,可以增加可用線程的數(shù)量。線程池中的每個線程都被分配了一個任務(wù)。一旦任務(wù)完成,線程返回到池中,等待下一個任務(wù)分配。

3.線程池函數(shù):

在多線程應(yīng)用程序中使用線程池是必要的,原因有幾個:

1.線程池提高了應(yīng)用程序的相應(yīng)時間。因為線程池中的線程已經(jīng)準(zhǔn)備好并等待分配任務(wù),所以應(yīng)用程序可以直接使用它們,而無需創(chuàng)建新線程。2.線程池為CLR節(jié)省了為每個短期任務(wù)創(chuàng)建完整線程的開銷,并且可以在任務(wù)完成后回收資源。3.線程池根據(jù)系統(tǒng)中當(dāng)前運行的進程優(yōu)化線程時間片。4.線程池允許我們啟動多個任務(wù),而無需為每個線程設(shè)置屬性。5.線程池允許我們傳遞一個對象引用,該對象引用包含正在執(zhí)行的任務(wù)的程序參數(shù)的狀態(tài)信息。6.線程池可以用來解決限制處理特定請求的最大線程數(shù)的問題。4.創(chuàng)建線程池有四種方法:

Java通過執(zhí)行器提供了四種線程池(JDK1.5的并行契約),即:

創(chuàng)建一個可緩存的線程池。如果線程池的長度超過處理需要,空閑線程可以靈活回收。如果沒有回收,就創(chuàng)建新的線程。創(chuàng)建一個定長線程池,可以控制并發(fā)線程的最大數(shù)量,多余的線程會在隊列中等待。創(chuàng)建一個固定長度的線程池,以支持定期和周期性的任務(wù)執(zhí)行。創(chuàng)建一個單線程線程池,該線程池只使用一個工作線程執(zhí)行任務(wù),并保證所有任務(wù)都按照指定的順序(FIFO、LIFO、priority)執(zhí)行。摘要:newCachedThreadPool創(chuàng)建的線程池是無限的。當(dāng)執(zhí)行第二個任務(wù)時,第一個任務(wù)已經(jīng)完成,執(zhí)行第一個任務(wù)的線程將被重用,而不用每次都創(chuàng)建新的線程。NewFixedThreadPool每次以傳遞的參數(shù)的大小執(zhí)行線程。其他線程正在等待(在企業(yè)中不常用)。NewScheduledThreadPool使用schedule方法創(chuàng)建單位時間的延遲線程池。

 
反對 0舉報 0 收藏 0 打賞 0評論 0
 
更多>同類資訊
推薦圖文
推薦資訊
點擊排行
合作伙伴
網(wǎng)站首頁  |  關(guān)于我們  |  聯(lián)系方式  |  使用協(xié)議  |  版權(quán)隱私  |  網(wǎng)站地圖  |  排名推廣  |  廣告服務(wù)  |  積分換禮  |  網(wǎng)站留言  |  RSS訂閱  |  違規(guī)舉報  |  冀ICP備2023006999號-8
 
主站蜘蛛池模板: 日韩三级在线 | 九九av| 国产91成人在在线播放 | 国产一区亚洲二区 | 福利二区 | 色婷婷综合久久久久中文一区二区 | 国产精品久久久久久在线 | 91久久久久久 | jizzjizzjizz亚洲女 | 欧美福利在线观看 | 麻豆免费在线 | 国内精品久久久久久久影视简单 | 91久久久久久久久久久久久 | 黄色一级a毛片 | 久久久亚洲成人 | 在线一区二区视频 | 久久网站热最新地址 | 91麻豆精品91久久久久久清纯 | 国产伦精品一区二区三区免费 | 国产二区在线播放 | 久久国产精品久久久久久 | 久久久亚洲一区 | 粉嫩久久99精品久久久久久夜 | 日本黄色电影网址 | 高清久久久 | 91久久国产综合久久蜜月精品 | 亚洲精品免费观看视频 | 91av电影在线播放 | 国产精品电影一区二区三区 | 亚洲 成人 在线 | 日韩欧美在线免费观看视频 | 一区二区精品在线 | 国产精品久久综合 | 国产精品久久久久久久久 | 久久国产影院 | 日韩一区在线视频 | 超碰在线影院 | 欧美一区二区三区在线视频 | 国产这里只有精品 | 久久久噜噜噜久久久 | 成人在线免费视频 |