亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

マルチスレッド - Java メモリの可視性に関する質(zhì)問
漂亮男人
漂亮男人 2017-05-17 10:06:58
0
4
1073

次のコードを參照してください

リーリー

Thread.sleep(1)Thread.sleep(1000) に置き換えて、 flag の変更された値 ( td ) を取得します。 isFlag()trueを返します。
Java メモリ モデルの概念は読んだことがありますが、このコードをどう説明すればよいかわかりません。誰(shuí)が説明できますか?

関連する質(zhì)問: Java マルチスレッドの作業(yè)メモリはどれくらいですか?

漂亮男人
漂亮男人

全員に返信(4)
淡淡煙草味

まず、期待される効果を教えてください。質(zhì)問は明確にしましょう

滿天的星座

この期待は標(biāo)準(zhǔn)ではサポートされていません。コード內(nèi)では、「メインスレッドの読み取り前にサブスレッドの書き込みが発生する」ことを保証するための処理は何も行われていません。

sleep(1000)後で変更が表示されるのは単なる偶然です。JVM がメインスレッドに変更を表示するまで長(zhǎng)時(shí)間待機(jī)する場(chǎng)合、またはメインスレッドに変更を表示させない場(chǎng)合でも、仕様には違反しません。

劉奇

あなたのプログラムをテストする必要があります volatile 關(guān)鍵字的功能。但是 “把 Thread.sleep(1) 換成 Thread.sleep(1000) 就能獲得預(yù)期效果” 這樣做理解上是不對(duì)的。
首先,程序中總共有兩個(gè)線程,主線程(暫稱 線程M)和 new Thread(td) (暫定的にスレッド T と呼ばれます)。


の値を書き込むとき、メモリの可視性のため、スレッドMはスレッドTのThread.sleep(1) 的時(shí)候,線程M 在 1ms 之后,便開始在 while(true) 循環(huán)中檢查 td.isFlag()flagの値を時(shí)間內(nèi)に読み取ることができないため、この時(shí)點(diǎn)で無(wú)限ループが発生します。

Thread.sleep(1000) を記述するとき、M は 1000ms コードの後の while(true) ループで td.isFlag() のチェックを開始します。 >; ただし、T は 200ms で
flag

の値を true に設(shè)定するため、M は 1000ms 後に td.isFlag() を検出します。値は true を返す必要があります。 code> を?qū)g行すると、最初の判定で true が返され、出力が生成され、while(true) ループから抜け出します。 Thread.sleep(1000) 的時(shí)候,M 在 1000ms 之后,開始在 while(true) 循環(huán)中檢查 td.isFlag() 的值;但是 T 在 200ms 的時(shí)候,便將 flag 的值設(shè)為 true 了,所以,M 在 1000ms 之后檢測(cè) td.isFlag() 的值肯定是返回 true 的,那么第一次判斷便會(huì)返回 true,產(chǎn)生輸出并跳出 while(true)


スレッド M がスレッド T の

flag の値を時(shí)間內(nèi)に読み取るためには、 flag キーワードで変更する必要があります: volatile リーリー

その後、

flagへのすべての変更が他のスレッドに即座に表示されるようになります。 の使用については、私のブログを參照してください: Java マルチスレッド (6): volatile キーワード volatile の使用

大家講道理

次の 3 つのコードを參照できます。
最初のコードは、マルチスレッドの可視性の問題により、無(wú)限ループを引き起こす可能性があります。
2 つ目は、この問題を解決するために synchronized を使用することです。これはほとんどの作業(yè)シナリオに適しています。 synchronized解決此問題,大多數(shù)工作場(chǎng)景用這個(gè)好
第三個(gè)是使用volatile 3 つ目は、この問題を解決するために volatile を使用することです。ただし、このキーワードのみです。実際のシナリオでは制限が比較的大きいため、注意して使用してください

リーリー リーリー リーリー
最新のダウンロード
詳細(xì)>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート