国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

解決方法一:線程安全問題的方法

aboutU / 2011人閱讀

摘要:賣票案例出現了線程安全問題賣出了不存在的票和重復的票解決線程安全問題的一種方案使用同步代碼塊格式鎖對象可能會出現線程安全問題的代碼訪問了共享數據的代碼注意通過代碼塊中的鎖對象可以使用任意的對象但是必須保證多個線程使用的鎖對象是同一個鎖對象作


package com.itheima.demo07.Synchronized;
/*

賣票案例出現了線程安全問題
賣出了不存在的票和重復的票

解決線程安全問題的一種方案:使用同步代碼塊
格式:
    synchronized(鎖對象){
        可能會出現線程安全問題的代碼(訪問了共享數據的代碼)
    }

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

*/
public class RunnableImpl implements Runnable{

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

//創建一個鎖對象
Object obj = new Object();

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

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

}
package com.itheima.demo07.Synchronized;

/*

模擬賣票案例
創建3個線程,同時開啟,對共享的票進行出售

*/
public class Demo01Ticket {

public static void main(String[] args) {
    //創建Runnable接口的實現類對象
    RunnableImpl run = new RunnableImpl();
    //創建Thread類對象,構造方法中傳遞Runnable接口的實現類對象
    Thread t0 = new Thread(run);
    Thread t1 = new Thread(run);
    Thread t2 = new Thread(run);
    //調用start方法開啟多線程
    t0.start();
    t1.start();
    t2.start();
}

}

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/75606.html

相關文章

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

    摘要:線程安全問題都是由全局變量及靜態變量引起的。常量始終是線程安全的,因為只存在讀操作。局部變量是線程安全的。有狀態對象,就是有實例變量的對象,可以保存數據,是非線程安全的。 前言 有多少人在使用Spring框架時,很多時候不知道或者忽視了多線程的問題? ??因為寫程序時,或做單元測試時,很難有機會碰到多線程的問題,因為沒有那么容易模擬多線程測試的環境。那么當多個線程調用同一個bean的時...

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

    摘要:線程安全問題都是由全局變量及靜態變量引起的。常量始終是線程安全的,因為只存在讀操作。局部變量是線程安全的。有狀態對象,就是有實例變量的對象,可以保存數據,是非線程安全的。 前言 有多少人在使用Spring框架時,很多時候不知道或者忽視了多線程的問題? ??因為寫程序時,或做單元測試時,很難有機會碰到多線程的問題,因為沒有那么容易模擬多線程測試的環境。那么當多個線程調用同一個bean的時...

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

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

    羅志環 評論0 收藏0
  • 單例模式五種實現

    摘要:前言文章介紹了單例模式五種實現的方式,分別是懶漢,餓漢,靜態內部類,雙重檢驗鎖以及枚舉實現方式,并主要關心加載時機以及線程安全。 前言 文章介紹了單例模式五種實現的方式,分別是懶漢,餓漢,靜態內部類,雙重檢驗鎖以及枚舉實現方式,并主要關心加載時機以及線程安全。首先,通俗點講,餓漢就是這個類還沒被使用到的時候,實例已經創建好了;而懶漢是使用到的時候才創建對應的實例。線程安全方面主要考慮實...

    Jrain 評論0 收藏0

發表評論

0條評論

aboutU

|高級講師

TA的文章

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