第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

誰(shuí)能解釋一下結(jié)果?

誰(shuí)能解釋一下結(jié)果?

紅顏莎娜 2024-01-05 09:55:50
public class Bank {    private  int sum=0;    public void add(int n) {        try {            Thread.sleep(10);        } catch (InterruptedException e) {            e.printStackTrace();        }        sum+= n;        System.out.println(sum);    }}public class Consumer implements Runnable {    Bank bank = new Bank();    @Override    public void run() {        for (int i = 0; i < 10; i++) {            bank.add(100);        }     }}public class Tes2 {    public static void main(String[] args) {        Consumer consumer = new Consumer();        Thread thread1 = new Thread(consumer);        Thread thread2 = new Thread(consumer);        thread1.start();        thread2.start();    }}這是一個(gè)多線程程序,模擬多個(gè)儲(chǔ)戶到銀行存錢(qián),用來(lái)演示多線程的安全問(wèn)題。由于代碼不同步,它的第一、第二個(gè)結(jié)果可能是200/200,200/300,等等。但是我不明白為什么你得到100/100,誰(shuí)能解釋一下?
查看完整描述

2 回答

?
撒科打諢

TA貢獻(xiàn)1934條經(jīng)驗(yàn) 獲得超2個(gè)贊

這是一個(gè)競(jìng)爭(zhēng)條件。

兩個(gè)線程都可以訪問(wèn) sum。

總和+=n;不是原子的

線程 1 讀取 sum 0

線程 2 換入,因?yàn)榇a未同步,讀取 sum 為 0

線程 1 將 100 加到 0 并將其寫(xiě)入總和

線程 2 將 0 加 100 并將其寫(xiě)入總和并覆蓋線程 1 的值


查看完整回答
反對(duì) 回復(fù) 2024-01-05
?
神不在的星期二

TA貢獻(xiàn)1963條經(jīng)驗(yàn) 獲得超6個(gè)贊

如果您僅根據(jù)代碼中的行來(lái)考慮該程序的并發(fā)性,那么 100/100 的輸出結(jié)果就沒(méi)有意義。但您還必須考慮執(zhí)行這些行時(shí)實(shí)際發(fā)生的指令是什么。每行代碼可以包含很多很多匯編指令。在這種情況下,要添加nsum,真正發(fā)生的是從內(nèi)存中讀取 的值sum,可能加載到寄存器中,遞增,然后重新寫(xiě)入內(nèi)存中。

100/100 輸出可能發(fā)生在以下場(chǎng)景中。假設(shè)線程 1 和線程 2 都調(diào)用bank.add(100),并且銀行異步處理請(qǐng)求。也就是說(shuō),銀行有一個(gè)線程處理每個(gè)請(qǐng)求。

然后,該組的線程 1 加載 的值sum,該值為零。線程 2 還加載了緊隨其后的值sum,該值仍然為零。然后,線程 1 獲取它加載的值,添加n=100,并將其寫(xiě)入內(nèi)存。線程2做同樣的事;它采用之前加載的 sum 值 0,加上 100,然后將其寫(xiě)回內(nèi)存。然后,他們各自打印出 100 的值。


查看完整回答
反對(duì) 回復(fù) 2024-01-05
  • 2 回答
  • 0 關(guān)注
  • 168 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)