久久99国产亚洲高清观看首页,久久久久综合精品福利啪啪,国产成人免费午夜在线观看,91视频网,久久精品国产福利国产琪琪,久久国产精品免费观看,国产精品成

Java試題筆試題目答案

時(shí)間:2022-09-26 11:39:16 試題 我要投稿
  • 相關(guān)推薦

Java試題筆試題目答案

  1)Java 中能創(chuàng )建 Volatile 數組嗎?

Java試題筆試題目答案

  能,Java 中可以創(chuàng )建 volatile 類(lèi)型數組,不過(guò)只是一個(gè)指向數組的引用,而不是整個(gè)數組。我的意思是,如果改變引用指向的數組,將會(huì )受到 volatile 的保護,但是如果多個(gè)線(xiàn)程同時(shí)改變數組的元素,volatile 標示符就不能起到之前的保護作用了。

  2)volatile 能使得一個(gè)非原子操作變成原子操作嗎?

  一個(gè)典型的例子是在類(lèi)中有一個(gè) long 類(lèi)型的成員變量。如果你知道該成員變量會(huì )被多個(gè)線(xiàn)程訪(fǎng)問(wèn),如計數器、價(jià)格等,你最好是將其設置為 volatile。為什么?因為 Java 中讀取 long 類(lèi)型變量不是原子的,需要分成兩步,如果一個(gè)線(xiàn)程正在修改該 long 變量的值,另一個(gè)線(xiàn)程可能只能看到該值的一半(前 32 位)。但是對一個(gè) volatile 型的 long 或 double 變量的讀寫(xiě)是原子。

  3)volatile 修飾符的有過(guò)什么實(shí)踐?

  一種實(shí)踐是用 volatile 修飾 long 和 double 變量,使其能按原子類(lèi)型來(lái)讀寫(xiě)。double 和 long 都是64位寬,因此對這兩種類(lèi)型的讀是分為兩部分的,第一次讀取第一個(gè) 32 位,然后再讀剩下的 32 位,這個(gè)過(guò)程不是原子的,但 Java 中 volatile 型的 long 或 double 變量的讀寫(xiě)是原子的。volatile 修復符的另一個(gè)作用是提供內存屏障(memory barrier),例如在分布式框架中的應用。簡(jiǎn)單的說(shuō),就是當你寫(xiě)一個(gè) volatile 變量之前,Java 內存模型會(huì )插入一個(gè)寫(xiě)屏障(write barrier),讀一個(gè) volatile 變量之前,會(huì )插入一個(gè)讀屏障(read barrier)。意思就是說(shuō),在你寫(xiě)一個(gè) volatile 域時(shí),能保證任何線(xiàn)程都能看到你寫(xiě)的值,同時(shí),在寫(xiě)之前,也能保證任何數值的更新對所有線(xiàn)程是可見(jiàn)的,因為內存屏障會(huì )將其他所有寫(xiě)的值更新到緩存。

  4)volatile 類(lèi)型變量提供什么保證?(答案)

  volatile 變量提供順序和可見(jiàn)性保證,例如,JVM 或者 JIT為了獲得更好的性能會(huì )對語(yǔ)句重排序,但是 volatile 類(lèi)型變量即使在沒(méi)有同步塊的情況下賦值也不會(huì )與其他語(yǔ)句重排序。 volatile 提供 happens-before 的保證,確保一個(gè)線(xiàn)程的修改能對其他線(xiàn)程是可見(jiàn)的。某些情況下,volatile 還能提供原子性,如讀 64 位數據類(lèi)型,像 long 和 double 都不是原子的,但 volatile 類(lèi)型的 double 和 long 就是原子的。

  5) 10 個(gè)線(xiàn)程和 2 個(gè)線(xiàn)程的同步代碼,哪個(gè)更容易寫(xiě)?

  從寫(xiě)代碼的角度來(lái)說(shuō),兩者的復雜度是相同的,因為同步代碼與線(xiàn)程數量是相互獨立的。但是同步策略的選擇依賴(lài)于線(xiàn)程的數量,因為越多的線(xiàn)程意味著(zhù)更大的競爭,所以你需要利用同步技術(shù),如鎖分離,這要求更復雜的代碼和專(zhuān)業(yè)知識。

  6)你是如何調用 wait()方法的?使用 if 塊還是循環(huán)?為什么?(答案)

  wait() 方法應該在循環(huán)調用,因為當線(xiàn)程獲取到 CPU 開(kāi)始執行的時(shí)候,其他條件可能還沒(méi)有滿(mǎn)足,所以在處理前,循環(huán)檢測條件是否滿(mǎn)足會(huì )更好。下面是一段標準的使用 wait 和 notify 方法的代碼:

  // The standard idiom for using the wait method

  參見(jiàn) Effective Java 第 69 條,獲取更多關(guān)于為什么應該在循環(huán)中來(lái)調用 wait 方法的內容。



【Java試題筆試題目答案】相關(guān)文章:

銀監局筆試題目及答案05-03

財務(wù)筆試題目及答案03-16

項目執行筆試題目01-17

JavaWeb工程師筆試題題目04-20

面試題目及答案03-08

不能錯過(guò)的關(guān)于面向對象的java筆試題03-19

國企人力資源崗位筆試題目07-27

文秘面試題目及答案03-21

求職面試題目及答案11-07

網(wǎng)絡(luò )效應試題目及答案09-06

赤峰市| 永定县| 板桥市| 武山县| 环江| 巴马| 湖口县| 富蕴县| 屏山县| 平陆县| 光泽县| 临猗县| 牟定县| 清河县| 嘉兴市| 临夏县| 六盘水市| 子洲县| 无极县| 新和县| 奎屯市| 泊头市| 禄丰县| 张家界市| 绥江县| 兴国县| 张家界市| 沛县| 佳木斯市| 宾阳县| 崇左市| 建平县| 马公市| 东宁县| 漯河市| 栾川县| 永城市| 普宁市| 吴川市| 江孜县| 蒲江县|