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

溫馨提示×

溫馨提示×

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

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

如何實現Java synchronize線程安全測試

發布時間:2020-08-04 09:34:51 來源:億速云 閱讀:159 作者:小豬 欄目:編程語言

這篇文章主要為大家展示了如何實現Java synchronize線程安全測試,內容簡而易懂,希望大家可以學習一下,學習完之后肯定會有收獲的,下面讓小編帶大家一起來看看吧。

線程的運行是與當前CPU的資源調度與時間片是有關系的,當一個線程中的執行到某一部分方法的時候輪到另外一個線程來執行相應的代碼,所以還沒有等到第一個線程執行完那么CPU有切換到另外一個線程來運行其相應的代碼,所以這個時候假如操作公共的數據部分就會出現錯誤

為了解決這個問題,可以使用 synchronized 同步代碼塊來對公共部分進行同步操作

在用synchronize關鍵字修飾同步代碼塊時,運行代碼發現不能交替賣票。 以下是初始代碼

package com.itheima.Test;

public class Test1a {

  public static void main(String[] args) {
    Ticket1a t1=new Ticket1a();
    new Thread(t1,"A").start();
    new Thread(t1,"B").start();
    new Thread(t1,"C").start();
    
  }

}
class Ticket1a implements Runnable{
   int ticket=100;
  @Override
  public void run() {
    synchronized (Ticket1a.class) {          
    while (true) {
      if (ticket<=0) {
        break;
      }
      try {
        Thread.sleep(20);
      } catch (InterruptedException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
      }
        System.out.println(Thread.currentThread().getName()+" sold  "+(ticket--));
    }
    }
  }
}

運行結果:

A sold  100
A sold  99
A sold  98
A sold  97
A sold  96
A sold  95
A sold  94
A sold  93
A sold  92
A sold  91
.
.
.
A sold  10
A sold  9
A sold  8
A sold  7
A sold  6
A sold  5
A sold  4
A sold  3
A sold  2
A sold  1

雖然解決了線程的安全問題,但是不能實現三個窗口交替賣票。后來仔細一看,是synchronize關鍵字修飾的代碼塊位置不對,相當于修飾了同步方法。

更改后:

@Override
  public void run() {
    while (true) {
        synchronized (Ticket1a.class) {
      if (ticket<=0) {
        break;
      }
      try {
        Thread.sleep(20);
      } catch (InterruptedException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
      }
        System.out.println(Thread.currentThread().getName()+" sold  "+(ticket--));
      }
    }
  }

這樣就完成了線程安全的小測試。

以上就是關于如何實現Java synchronize線程安全測試的內容,如果你們有學習到知識或者技能,可以把它分享出去讓更多的人看到。

向AI問一下細節

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

AI

扎鲁特旗| 海门市| 凤山县| 屯门区| 梁山县| 天津市| 吉林市| 临漳县| 桃园县| 隆林| 谷城县| 吴川市| 望奎县| 应用必备| 南丹县| 普兰店市| 彭阳县| 渝中区| 栖霞市| 麻阳| 陈巴尔虎旗| 安顺市| 康乐县| 任丘市| 乌兰察布市| 明溪县| 桑植县| 漳平市| 津南区| 车致| 湟中县| 镇康县| 沅江市| 仪征市| 聂拉木县| 刚察县| 定陶县| 武川县| 比如县| 南靖县| 鹤山市|