java-memory-model

    0熱度

    2回答

    我讀了synchronized塊內部的代碼符合語義「之前發生」,讓所有的同步塊內寫入的值應該是在繼承其他線程可見。此外,我已經讀過,只有在同步塊終止的情況下刷新高速緩存。如果只有高速緩存刷新了同步塊終止,在以下描述的場景中如何執行'以前發生'的語義? 線程A具有參考對象C和在上C.同步其同步代碼改變℃的場 線程B也得到了一個參考對象C現在 線程A被暫停之前的同步代碼結束。 線程B在跳轉到操作和訪問

    12熱度

    7回答

    任何人都可以告訴我,這個類是否是線程安全的? class Foo { private final Map<String,String> aMap; public Foo() { aMap = new HashMap<String, String>(); aMap.put("1", "a"); aMap.put("2", "b");

    0熱度

    1回答

    如何設置最大堆棧大小? 我使用jEdit在相當大的文件(73 kb)中用正則表達式進行搜索,並且因爲StackOverflowException而失敗。 我試圖設置-Xss40m,但它似乎是初始堆棧大小,一段時間後它失敗與下面的異常後 11:45:31 AM [AWT-EventQueue-0] [error] AWT-EventQueue-0: Exception in thread "AWT-

    3熱度

    3回答

    我在某處讀到啓動線程對發生關係之前有一些特殊效果。現在我不確定我的代碼是否保證關係之前發生的事情,所以請賜教。 我有一個Dispatcher線程和一個Worker類實現Runnable接口。分派器線程創建Worker的新實例,並通過帶有元素的add方法在Worker實例中填充LinkedList。 然後分派器通過execute方法將Worker實例傳遞給ExecutorService。 然後Wor

    6熱度

    2回答

    由於Java 5,volatile關鍵字發佈/收購語義使副作用可見於其他線程(包括分配到非易失性變量!)。以這兩個變量,例如: int i; volatile int v; 注意i是有規律的,非易失性變量。試想一下,線程1執行以下語句: i = 42; v = 0; 在稍後的某個時間點,線程2執行以下語句: int some_local_variable = v; print(i);

    22熱度

    5回答

    我們在我們的一個項目中使用volatile來維護不同線程訪問的變量的相同副本。我的問題是使用volatile和static是否合適。編譯器不會給出任何錯誤,但我不明白使用兩者的原因。

    0熱度

    2回答

    我已經安排了一個jar文件在系統啓動時使用mysql進行運行。 它用來將數千條記錄從一個數據庫推送到另一個數據庫,在每次執行期間它佔用大量的cpu內存,但一旦完成(執行成功完成),它不會釋放佔用的cpu內存,直到系統重新啓動。 這個罐子計劃每4小時運行一次。 我如何釋放這個佔用的內存? - 謝謝, 馬努 感謝您的關注:)

    1熱度

    3回答

    是否有可能在同步塊內重新排列語句?例如 synchronized(lock) { statement1; statement2; } 其中,statement1和statement2不相互依賴。處理器或編譯器可以重新排序這些語句嗎? 謝謝。

    2熱度

    1回答

    Java存儲器模型提供了DRF保證(數據競爭自由),這意味着在寬鬆的java內存模型下執行時,數據競爭自由程序會產生與順序一致執行相同的行爲。我有以下問題: a)給定一個活潑的程序,編譯器(非常具體的任何jvm實現)做延遲集分析/線程轉義分析等,以找出需要插入的圍欄指令,使其競爭-自由?或者根據它在哪裏執行而做JIT? b)如果編譯器做了它(在這種情況下是jvm),爲什麼我們不能編寫racy程序,

    37熱度

    1回答

    新的C++標準引入了內存模型的概念。關於它的問題已經有問題了,它是什麼意思,它如何改變我們在C++中編寫代碼的方式等等。 我有興趣瞭解C++內存模型如何與舊的,衆所周知的Java內存模型(1.5)相關聯。它是一樣的嗎?它是否相似?他們有什麼重大的區別?如果是這樣,爲什麼? Java內存模型已經存在了很長時間,很多人都很熟悉它,所以我想這不僅對我來說可能對學習C++內存模型很有幫助,通過將它與Jav