freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

java培訓(xùn)-java高并發(fā)大全-在線瀏覽

2024-10-21 04:27本頁(yè)面
  

【正文】 ervlet就是以單實(shí)例多線程的方式工作,和每個(gè)請(qǐng)求相關(guān)的數(shù)據(jù)都是通過Servlet子類的service方法(或者是doGet或doPost方法)的參數(shù)傳入的。springMVC的控制器也是這么做的,從請(qǐng)求中獲得的對(duì)象都是以方法的參數(shù)傳入而不是作為類的成員,很明顯Struts 2的做法就正好相反,因此Struts 2中作為控制器的Action類都是每個(gè)請(qǐng)求對(duì)應(yīng)一個(gè)實(shí)例。能夠引用這些對(duì)象的任何線程都可以修改這些對(duì)象。Java基于線程和鎖的并發(fā)過于底層,而且使用鎖很多時(shí)候都是很萬惡的,因?yàn)樗喈?dāng)于讓所有的并發(fā)都變成了排隊(duì)等待。對(duì)于類的非靜態(tài)方法(成員方法)而言,這意味這要取得對(duì)象實(shí)例的鎖,對(duì)于類的靜態(tài)方法(類方法)而言,要取得類的Class對(duì)象的鎖,對(duì)于同步代碼塊,程序員可以指定要取得的是那個(gè)對(duì)象的鎖。這種結(jié)構(gòu)在并發(fā)理論中稱為臨界區(qū)(critical section)。在JVM內(nèi)部,為了提高效率,同時(shí)運(yùn)行的每個(gè)線程都會(huì)有它正在處理的數(shù)據(jù)的緩存副本,當(dāng)我們使用synchronzied進(jìn)行同步的時(shí)候,真正被同步的是在不同線程中表示被鎖定對(duì)象的內(nèi)存塊(副本數(shù)據(jù)會(huì)保持和主內(nèi)存的同步,現(xiàn)在知道為什么要用同步這個(gè)詞匯了吧),簡(jiǎn)單的說就是在同步塊或同步方法執(zhí)行完后,對(duì)被鎖定的對(duì)象做的任何修改要在釋放鎖之前寫回到主內(nèi)存中;在進(jìn)入同步塊得到鎖之后,被鎖定對(duì)象的數(shù)據(jù)是從主內(nèi)存中讀出來的,持有鎖的線程的數(shù)據(jù)副本一定和主內(nèi)存中的數(shù)據(jù)視圖是同步的。對(duì)變量值的修改總會(huì)在完成之后寫回到主內(nèi)存中。不變模式也是并發(fā)編程時(shí)可以考慮的一種設(shè)計(jì)。Java中我們使用頻率極高的String類就采用了這樣的設(shè)計(jì)。說到這里你可能也體會(huì)到final關(guān)鍵字的重要意義了。Doug Lea的杰作主要包括以下內(nèi)容:更好的線程安全的容器 線程池和相關(guān)的工具類 可選的非阻塞解決方案 顯示的鎖和信號(hào)量機(jī)制下面我們對(duì)這些東西進(jìn)行一一解讀。它們利用了現(xiàn)代處理器的特性,可以用非阻塞的方式完成原子操作,代碼如下所示: /** ID序列生成器 */ public class IdGenerator {private final AtomicLong sequenceNumber = new AtomicLong(0)。} } 顯示鎖基于synchronized關(guān)鍵字的鎖機(jī)制有以下問題:鎖只有一種類型,而且對(duì)所有同步操作都是一樣的作用 鎖只能在代碼塊或方法開始的地方獲得,在結(jié)束的地方釋放 線程要么得到鎖,要么阻塞,沒有其他的可能性Java 5對(duì)鎖機(jī)制進(jìn)行了重構(gòu),提供了顯示的鎖,這樣可以在以下幾個(gè)方面提升鎖機(jī)制:可以添加不同類型的鎖,例如讀取鎖和寫入鎖 可以在一個(gè)方法中加鎖,在另一個(gè)方法中解鎖可以使用tryLock方式嘗試獲得鎖,如果得不到鎖可以等待、回退或者干點(diǎn)別的事情,當(dāng)然也可以在超時(shí)之后放棄操作 ,主要有兩個(gè)實(shí)現(xiàn)類:ReentrantLock在讀操作很多寫操作很少時(shí)性能更好的一種重入鎖對(duì)于如何使用顯示鎖,可以參考我的Java面試系列文章《Java面試題集5170》中第60題的代碼。CountDownLatchCountDownLatch是一種簡(jiǎn)單的同步模式,它讓一個(gè)線程可以等待一個(gè)或多個(gè)線程完成它們的工作從而避免對(duì)臨界資源并發(fā)訪問所引發(fā)的各種問題。import 。// 名字private long workDuration。 = workDuration。try {(workDuration)。}(name + “ has finished the job...”)。private CountDownLatch cdLatch。 = cdLatch。// 讓工人開始工作()。// 最大工作時(shí)間private static final int MIN_WORK_DURATION = 1000。// 如果有N個(gè)哲學(xué)家,最多只允許N1人同時(shí)取叉子}/*** 取得叉子* param index 第幾個(gè)哲學(xué)家* param leftFirst 是否先取得左邊的叉子* throws InterruptedException*/public static void putOnFork(int index, boolean leftFirst)throws InterruptedException {if(leftFirst){forks[index].acquire()。}else {forks[(index + 1)% NUM_OF_PHILO].acquire()。}}/*** 放回叉子* param index 第幾個(gè)哲學(xué)家* param leftFirst 是否先放回左邊的叉子* throws InterruptedException*/public static void putDownFork(int index, boolean leftFirst)throws InterruptedException {if(leftFirst){forks[index].release()。}else {forks[(index + 1)% NUM_OF_PHIL
點(diǎn)擊復(fù)制文檔內(nèi)容
物理相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1