成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

線程安全問題的代碼

Java_oldboy / 2757人閱讀

摘要:實(shí)現(xiàn)賣票案例定義一個多個線程共享的票源設(shè)置線程任務(wù)賣票使用死循環(huán)讓賣票操作重復(fù)執(zhí)行先判斷票是否存在提高安全問題出現(xiàn)的概率讓程序睡眠票存在賣票正在賣第張票模擬賣票案例創(chuàng)建個線程同時開啟對共享的票進(jìn)行出售創(chuàng)建接口的實(shí)現(xiàn)類對象創(chuàng)建類對

package com.itheima.demo06.ThreadSafe;
/*

實(shí)現(xiàn)賣票案例

*/
public class RunnableImpl implements Runnable{

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


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

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

}
package com.itheima.demo06.ThreadSafe;
/*

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

*/
public class Demo01Ticket {

public static void main(String[] args) {
    //創(chuàng)建Runnable接口的實(shí)現(xiàn)類對象
    RunnableImpl run = new RunnableImpl();
    //創(chuàng)建Thread類對象,構(gòu)造方法中傳遞Runnable接口的實(shí)現(xiàn)類對象
    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)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/75608.html

相關(guān)文章

  • 線程安全

    摘要:不可變在中,不可變的對象一定是線程安全的。在里標(biāo)注自己是線程安全的類,大多都不是絕對線程安全,比如某些情況下類在調(diào)用端也需要額外的同步措施。無同步方案要保證線程安全,不一定就得需要數(shù)據(jù)的同步,兩者沒有因果關(guān)系。 在之前學(xué)習(xí)編程的時候,有一個概念根深蒂固,即程序=算法+數(shù)據(jù)結(jié)構(gòu)。數(shù)據(jù)代表問題空間中的客體,代碼就用來處理這些數(shù)據(jù),這種思維是站在計算機(jī)的角度去抽象問題和解決問題,稱之為面向過...

    fuyi501 評論0 收藏0
  • 線程安全(上)--徹底搞懂volatile關(guān)鍵字

    摘要:此時,就出現(xiàn)了線程不安全問題了。因?yàn)榈某跏贾禃且虼?,重排序是有可能?dǎo)致線程安全問題的。真的能完全保證一個變量的線程安全嗎我們通過上面的講解,發(fā)現(xiàn)關(guān)鍵字還是挺有用的,不但能夠保證變量的可見性,還能保證代碼的有序性。 對于volatile這個關(guān)鍵字,相信很多朋友都聽說過,甚至使用過,這個關(guān)鍵字雖然字面上理解起來比較簡單,但是要用好起來卻不是一件容易的事。 這篇文章將從多個方面來講解vol...

    teren 評論0 收藏0
  • 關(guān)于偏向鎖,安全點(diǎn),JIT一些暗坑.

    摘要:前言本文是一篇簡短的雜糅本文源自于作者最近的一個疑問為什么在舊版的中偏向鎖的移除一定要在全局安全點(diǎn)進(jìn)行同時在上個星期作者參與的一個項(xiàng)目發(fā)生了一件怪事一個服務(wù)莫名其妙地不接受任何請求了一切請求都是而查看日志發(fā)現(xiàn)出故障的服務(wù)本身去請求另一個服務(wù) 前言 本文是一篇簡短的雜糅. 本文源自于作者最近的一個疑問:為什么在舊版的jdk中偏向鎖的移除一定要在全局安全點(diǎn)進(jìn)行?同時在上個星期,作者參與的一...

    JeOam 評論0 收藏0
  • 如何看待Spring下單例模式與線程安全矛盾

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

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

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

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

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

    羅志環(huán) 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<