91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java 多線程-線程不安全案例

發布時間:2020-07-29 23:35:59 來源:網絡 閱讀:401 作者:wx5d21d5e6e5ab1 欄目:編程語言

搶票案例:

public class n {

public static void main(String[]args) throws InterruptedException
{
    web wb=new web();
    new Thread(wb,"a").start();
    new Thread(wb,"b").start();
    new Thread(wb,"c").start();
}
}

class web implements Runnable{
int num=10;
private boolean flag=true;
public void run()
{
    while(flag)
    {
        test();
    }
}
public void test()
{   if(num<0)
    {
        flag=false;
        return;
    }
    try {
        Thread.sleep(200);
    }catch(InterruptedException e)
    {
        e.printStackTrace();
    }
    System.out.println(Thread.currentThread().getName()+"-->"+num--);
    //線程不安全,可能都都是同一張票,可能票是負數
    //負數:當還有1張票時,三個線程同時進入,都等待后,有兩個線程為負數
    //相同票:線程有自己的工作臺,多個線程幾乎同時到達,拷貝數據
}
}

賬戶存取款案例:
當類繼承了Thread,構造時super(String name)可以設置線程名字
取錢:
只剩一張錢,多個線程取同一張錢
多個線程同時抵達,一個存一張錢,一個取一張錢,導致個人賬戶錢不變

public class el {

public static void main(String[]args)
{
    account a=new account(100,"me");
    get g=new get(a,80,"she");
    get g2=new get(a,90,"he");
    g.start();
    g2.start();
}

}

//賬戶
class account {
int money;
String name;
public account(int money,String name)
{
    this.money=money;
    this.name=name;
}

}
//模擬取款

class get extends Thread
{
account a; //取錢的賬戶
int getmoney; //單個人取的錢數
int getall; //多個人取的總數

public get (account a,int getmoney,String name)
{
    super(name);//Thread可以設置name
    this.a=a;
    this.getmoney=getmoney;
}

public void run()
{
    if(a.money-getmoney<0) //添加也沒用
    {
        return;
    }
    try {
        Thread.sleep(1000);
    } catch (InterruptedException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    a.money-=getmoney;
    getall+=getmoney;
    System.out.println(this.getName()+"-->賬戶余額為:"+a.money);
    System.out.println(this.getName()+"-->取錢總數為:"+getall);
}
}

操作容器案例:
可能會有容器元素被覆蓋,多個線程同時進入一個位置

public class h {

public static void main(String[]args)
{
    List<String> list=new ArrayList<String>();

    for(int i=0;i<10000;i++)
    {
        new Thread(()->
        {list.add(Thread.currentThread().getName());}
                ).start();
    }

    System.out.println(list.size());

}
}
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

海阳市| 毕节市| 耿马| 奇台县| 铜川市| 绥阳县| 思茅市| 济源市| 五寨县| 姚安县| 扎兰屯市| 定结县| 西城区| 喜德县| 清苑县| 德庆县| 天水市| 崇义县| 错那县| 会东县| 雅江县| 吴桥县| 怀仁县| 康马县| 宜良县| 简阳市| 平阴县| 嘉善县| 宁蒗| 东丰县| 行唐县| 湾仔区| 浦县| 普陀区| 天祝| 聂拉木县| 边坝县| 常熟市| 溆浦县| 壶关县| 绥宁县|