java多線程-改正不安全線程

并發(fā):
同一個對象對多個線程同時操作
線程同步:一種等待機制,等待前面線程使用完再下一個線程使用
線程同步形成條件:形成隊列,加上鎖機制(synchronized)
同步塊:synchronized(具體對象){代碼};鎖定資源,一個線程一個線程的使用

讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領域值得信任、有價值的長期合作伙伴,公司提供的服務項目有:域名注冊虛擬主機、營銷軟件、網站建設、公主嶺網站維護、網站推廣。

搶票:

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 synchronized void test()//鎖的是對象的資源,即this成員,讓資源每次只被一個線程使用,然后下次靠cpu調度,而不讓
                            //一份資源同時被多個線程使用
{   if(num<0)
        {
    flag=false;
    return;
}
try {
    Thread.sleep(200);
}catch(InterruptedException e)
{
    e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()+"-->"+num--);
//線程不安全,可能都都是同一張票,可能票是負數
//負數:當還有1張票時,三個線程同時進入,都等待后,有兩個線程為負數
//相同票:線程有自己的工作臺,多個線程幾乎同時到達,拷貝數據
}
}

取錢:

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()
{
    test();
}
public /*synchronized */void test()//鎖定失敗,不應該鎖this,而應該鎖account
{//因為a.money是account里的,總錢數應該每次由一個線程調用,而不是多個線程
//使用同步塊鎖定
    if(a.money<=0)
    {
        return;
    }
synchronized(a){

    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(()->
        {synchronized(list) {
            list.add(Thread.currentThread().getName());}}
                ).start();
    }
    try {
        Thread.sleep(10000);
    } catch (InterruptedException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    System.out.println(list.size());

}
}

新聞名稱:java多線程-改正不安全線程
文章地址:http://m.kartarina.com/article18/jedcgp.html

成都網站建設公司_創(chuàng)新互聯,為您提供響應式網站網站導航網站設計微信公眾號定制開發(fā)網站維護

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯

成都網站建設
主站蜘蛛池模板: 性色av无码免费一区二区三区| 最新无码A∨在线观看| 少妇无码AV无码一区| 中文字幕无码av激情不卡久久| 国产亚洲精品无码拍拍拍色欲| 国产∨亚洲V天堂无码久久久| 成人免费午夜无码视频| 亚洲最大av无码网址| 蜜桃AV无码免费看永久| 日本爆乳j罩杯无码视频| 92午夜少妇极品福利无码电影| 无码视频在线播放一二三区| 亚洲av永久无码精品天堂久久| 日韩专区无码人妻| 久久亚洲AV成人无码| 国产AV无码专区亚洲AVJULIA| 狠狠精品干练久久久无码中文字幕 | 精品无码一区二区三区爱欲| 无码日韩精品一区二区人妻| 精品无码人妻夜人多侵犯18| 中文有无人妻vs无码人妻激烈 | 中文人妻无码一区二区三区| 亚洲国产成人无码AV在线| 色噜噜综合亚洲av中文无码| 国产亚洲AV无码AV男人的天堂| 无码人妻aⅴ一区二区三区| 亚洲日韩一区二区一无码 | 亚洲AV无码第一区二区三区| 亚洲日产无码中文字幕| 国产成人无码免费网站| 无码不卡亚洲成?人片| 国产做无码视频在线观看| 特级小箩利无码毛片| 亚洲大尺度无码无码专线一区| 久久久久亚洲AV无码永不| 久久人妻av无码中文专区| 日韩乱码人妻无码中文字幕久久 | 久久精品无码专区免费| 国产精品无码久久av| 无码 免费 国产在线观看91| 久久影院午夜理论片无码|