亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

解決方法一:線程安全問(wèn)題的方法

aboutU / 2094人閱讀

摘要:賣票案例出現(xiàn)了線程安全問(wèn)題賣出了不存在的票和重復(fù)的票解決線程安全問(wèn)題的一種方案使用同步代碼塊格式鎖對(duì)象可能會(huì)出現(xiàn)線程安全問(wèn)題的代碼訪問(wèn)了共享數(shù)據(jù)的代碼注意通過(guò)代碼塊中的鎖對(duì)象可以使用任意的對(duì)象但是必須保證多個(gè)線程使用的鎖對(duì)象是同一個(gè)鎖對(duì)象作


package com.itheima.demo07.Synchronized;
/*

賣票案例出現(xiàn)了線程安全問(wèn)題
賣出了不存在的票和重復(fù)的票

解決線程安全問(wèn)題的一種方案:使用同步代碼塊
格式:
    synchronized(鎖對(duì)象){
        可能會(huì)出現(xiàn)線程安全問(wèn)題的代碼(訪問(wèn)了共享數(shù)據(jù)的代碼)
    }

注意:
    1.通過(guò)代碼塊中的鎖對(duì)象,可以使用任意的對(duì)象
    2.但是必須保證多個(gè)線程使用的鎖對(duì)象是同一個(gè)
    3.鎖對(duì)象作用:
        把同步代碼塊鎖住,只讓一個(gè)線程在同步代碼塊中執(zhí)行

*/
public class RunnableImpl implements Runnable{

//定義一個(gè)多個(gè)線程共享的票源
private  int ticket = 100;

//創(chuàng)建一個(gè)鎖對(duì)象
Object obj = new Object();

//設(shè)置線程任務(wù):賣票
@Override
public void run() {
    //使用死循環(huán),讓賣票操作重復(fù)執(zhí)行
    while(true){
       //同步代碼塊
        synchronized (obj){
            //先判斷票是否存在
            if(ticket>0){
                //提高安全問(wèn)題出現(xiàn)的概率,讓程序睡眠
                try {
                    Thread.sleep(10);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }

                //票存在,賣票 ticket--
                System.out.println(Thread.currentThread().getName()+"-->正在賣第"+ticket+"張票");
                ticket--;
            }
        }
    }
}

}
package com.itheima.demo07.Synchronized;

/*

模擬賣票案例
創(chuàng)建3個(gè)線程,同時(shí)開啟,對(duì)共享的票進(jìn)行出售

*/
public class Demo01Ticket {

public static void main(String[] args) {
    //創(chuàng)建Runnable接口的實(shí)現(xiàn)類對(duì)象
    RunnableImpl run = new RunnableImpl();
    //創(chuàng)建Thread類對(duì)象,構(gòu)造方法中傳遞Runnable接口的實(shí)現(xiàn)類對(duì)象
    Thread t0 = new Thread(run);
    Thread t1 = new Thread(run);
    Thread t2 = new Thread(run);
    //調(diào)用start方法開啟多線程
    t0.start();
    t1.start();
    t2.start();
}

}

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/75606.html

相關(guān)文章

  • 如何看待Spring下單例模式與線程安全矛盾

    摘要:線程安全問(wèn)題都是由全局變量及靜態(tài)變量引起的。常量始終是線程安全的,因?yàn)橹淮嬖谧x操作。局部變量是線程安全的。有狀態(tài)對(duì)象,就是有實(shí)例變量的對(duì)象,可以保存數(shù)據(jù),是非線程安全的。 前言 有多少人在使用Spring框架時(shí),很多時(shí)候不知道或者忽視了多線程的問(wèn)題? ??因?yàn)閷懗绦驎r(shí),或做單元測(cè)試時(shí),很難有機(jī)會(huì)碰到多線程的問(wèn)題,因?yàn)闆](méi)有那么容易模擬多線程測(cè)試的環(huán)境。那么當(dāng)多個(gè)線程調(diào)用同一個(gè)bean的時(shí)...

    dinfer 評(píng)論0 收藏0
  • 如何看待Spring下單例模式與線程安全矛盾

    摘要:線程安全問(wèn)題都是由全局變量及靜態(tài)變量引起的。常量始終是線程安全的,因?yàn)橹淮嬖谧x操作。局部變量是線程安全的。有狀態(tài)對(duì)象,就是有實(shí)例變量的對(duì)象,可以保存數(shù)據(jù),是非線程安全的。 前言 有多少人在使用Spring框架時(shí),很多時(shí)候不知道或者忽視了多線程的問(wèn)題? ??因?yàn)閷懗绦驎r(shí),或做單元測(cè)試時(shí),很難有機(jī)會(huì)碰到多線程的問(wèn)題,因?yàn)闆](méi)有那么容易模擬多線程測(cè)試的環(huán)境。那么當(dāng)多個(gè)線程調(diào)用同一個(gè)bean的時(shí)...

    劉永祥 評(píng)論0 收藏0
  • 1、多線程安全問(wèn)題 2、等待喚醒機(jī)制

    摘要:線程操作共享數(shù)據(jù)的安全問(wèn)題線程操作共享數(shù)據(jù)的安全問(wèn)題如果有多個(gè)線程在同時(shí)運(yùn)行,而這些線程可能會(huì)同時(shí)運(yùn)行這段代碼。喚醒全部可以將線程池中的所有線程都喚醒。 01線程操作共享數(shù)據(jù)的安全問(wèn)題 *A:線程操作共享數(shù)據(jù)的安全問(wèn)題 如果有多個(gè)線程在同時(shí)運(yùn)行,而這些線程可能會(huì)同時(shí)運(yùn)行這段代碼。 程序每次運(yùn)行結(jié)果和單線程運(yùn)行的結(jié)果是一樣的,而且其他的變量的值也和預(yù)期的是一樣的,就是線程安全的。 02...

    羅志環(huán) 評(píng)論0 收藏0
  • 單例模式五種實(shí)現(xiàn)

    摘要:前言文章介紹了單例模式五種實(shí)現(xiàn)的方式,分別是懶漢,餓漢,靜態(tài)內(nèi)部類,雙重檢驗(yàn)鎖以及枚舉實(shí)現(xiàn)方式,并主要關(guān)心加載時(shí)機(jī)以及線程安全。 前言 文章介紹了單例模式五種實(shí)現(xiàn)的方式,分別是懶漢,餓漢,靜態(tài)內(nèi)部類,雙重檢驗(yàn)鎖以及枚舉實(shí)現(xiàn)方式,并主要關(guān)心加載時(shí)機(jī)以及線程安全。首先,通俗點(diǎn)講,餓漢就是這個(gè)類還沒(méi)被使用到的時(shí)候,實(shí)例已經(jīng)創(chuàng)建好了;而懶漢是使用到的時(shí)候才創(chuàng)建對(duì)應(yīng)的實(shí)例。線程安全方面主要考慮實(shí)...

    Jrain 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<