Java試題筆試題目答案

時間:2022-09-24 12:56:00 試題 我要投稿
  • 相關推薦

Java試題筆試題目答案

  1、Java中能創建Volatile數組嗎?

Java試題筆試題目答案

  能,Java中可以創建volatile類型數組,不過只是一個指向數組的引用,而不是整個數組。我的意思是,如果改變引用指向的數組,將會受到volatile的保護,但是如果多個線程同時改變數組的元素,volatile標示符就不能起到之前的保護作用了。

  2、volatile能使得一個非原子操作變成原子操作嗎?

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

  3、volatile修飾符的有過什么實踐?

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

  4、volatile類型變量提供什么保證?

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

  5、10個線程和2個線程的同步代碼,哪個更容易寫?

  從寫代碼的角度來說,兩者的復雜度是相同的,因為同步代碼與線程數量是相互獨立的。但是同步策略的選擇依賴于線程的數量,因為越多的線程意味著更大的競爭,所以你需要利用同步技術,如鎖分離,這要求更復雜的代碼和專業知識。

  6、你是如何調用wait(、方法的?使用if塊還是循環?為什么?

  wait、方法應該在循環調用,因為當線程獲取到CPU開始執行的時候,其他條件可能還沒有滿足,所以在處理前,循環檢測條件是否滿足會更好。下面是一段標準的使用wait和notify方法的代碼://Thestandardidiomforusingthewaitmethod。

【Java試題筆試題目答案】相關文章:

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

財務筆試題目及答案03-16

項目執行筆試題目01-17

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

面試題目及答案03-08

不能錯過的關于面向對象的java筆試題03-19

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

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

網絡效應試題目及答案09-06

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

人人狠狠综合99综合久久,欧美日韩国产精品中文,极品精品国产超清自在线,人人澡欧美一区
亚洲色一区二区三区四区 | 亚洲Aⅴ狠狠爱一区二区三区 | 永久免费午夜福利视频 | 亚洲午夜成人Av电影 | 欧美一区二区视频三区 | 日本A网免费在线观看 |