亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Java > 正文

JAVA線程同步實例教程

2019-11-26 15:26:56
字體:
來源:轉載
供稿:網友

線程是Java程序設計里非常重要的概念,本文就以實例形式對此加以詳細解讀。具體分析如下:

首先,線程加鎖有什么用處呢?舉個例子:比如你現在有30000塊大洋在銀行存著,現在你到銀行取錢,當你輸入密碼完成后,已經輸入取款金額,比如你輸入的是20000,就是在銀行給你拿錢這個時刻,你老婆也去銀行取這筆錢,你老婆同樣取20000,因為此時你的賬上仍然是30000,所以銀行同樣的操作在你老婆那端又進行了一遍,這樣當你們兩個完成各自操作后,銀行記錄的你賬上還應該有10000塊存款,這樣是不是很爽。解決這個問題就用到了線程加鎖的知識,下面就讓我們一起來學習一下吧。

一、未處理線程同步的一個例子:

public class TextSync implements Runnable{  /**未處理線程同步   * @param args   */  Time time = new Time();  public static void main(String[] args) {    TextSync text = new TextSync();    Thread t1 = new Thread(text);    Thread t2 = new Thread(text);    t1.setName("t1");    t2.setName("t2");    t1.start();    t2.start();  }  @Override  public void run() {    time.add(Thread.currentThread().getName());  }}class Time {  private static int num = 0;  public void add(String name){    try {      num++;      //當第一個線程執行到此時,num變成了1,第一個線程暫停一秒,      //第二個線程開始執行,當第二個線程執行到此時,num變成了2,第二個線程暫停一秒,      //第一個線程此時的num同樣變成了2,所以最終的結果均為2;      Thread.sleep(1000);    } catch (InterruptedException e) {      e.printStackTrace();    }    System.out.println(name+"是第"+num+"個執行的線程。");  }}

輸出結果:

t2是第2個執行的線程。t1是第2個執行的線程。

二、線程同步

public class TextSynctwo implements Runnable{  /**線程同步   * @param args   */  Time1 time = new Time1();  public static void main(String[] args) {    TextSynctwo text = new TextSynctwo();    Thread t1 = new Thread(text);    Thread t2 = new Thread(text);    t1.setName("t1");    t2.setName("t2");    t1.start();    t2.start();  }  @Override  public void run() {    time.add(Thread.currentThread().getName());  }}class Time1 {  private static int num = 0;    //synchronized鎖定當前線程,可以在方法定義時進行聲明,或采用在方法中進行設置。  public synchronized void add(String name){    //synchronized (this) {//鎖定當前線程,防止此時被別的線程執行      try {        num++;        Thread.sleep(1000);      } catch (InterruptedException e) {        e.printStackTrace();      }      System.out.println(name+"是第"+num+"個執行的線程。");    //}  }}

輸出結果:

t1是第1個執行的線程。t2是第2個執行的線程。

三、死鎖

public class TestDeadLock implements Runnable{  /**死鎖   * @param args   */  private int flag = 0 ;   static Object o1 = new Object();  static Object o2 = new Object();  public static void main(String[] args) {    TestDeadLock td1 = new TestDeadLock();     TestDeadLock td2 = new TestDeadLock();     td1.flag = 1;    td2.flag = 2;    Thread t1 = new Thread(td1);     Thread t2 = new Thread(td2);    t1.setName("t1");    t2.setName("t2");    t1.start();    t2.start();  }  @Override  public void run() {    System.out.println(Thread.currentThread().getName());    if(flag == 1){      synchronized(o1){        try {          Thread.sleep(5000);        } catch (InterruptedException e) {          e.printStackTrace();        }        synchronized(o2){          System.out.println("1");        }      }    }    if(flag == 2){      synchronized(o2){        try {          Thread.sleep(5000);        } catch (InterruptedException e) {          e.printStackTrace();        }        synchronized(o1){          System.out.println("2");        }      }    }  }}

四、鎖定

public class TT implements Runnable{  /**鎖定   * @param args   */  int b = 100;  public static void main(String[] args) {    TT tt = new TT();    Thread th = new Thread(tt);    th.start();    try {      tt.m2();    } catch (Exception e) {      e.printStackTrace();    }    System.out.println(tt.b);  }  @Override  public void run() {    try {      m1();    } catch (Exception e) {      e.printStackTrace();    }  }  private synchronized void m1() throws Exception{    b = 1000;    Thread.sleep(5000);    System.out.println("b="+b);  }  private synchronized void m2() throws Exception{    Thread.sleep(2500);    b = 2500;  } }

現在的輸出結果是:

1000b=1000

可見這里m2先執行,m1要等m2執行完畢后方可執行。

希望本文所述對大家的Java程序設計有所幫助

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲嫩模很污视频| 国产精彩精品视频| 亚洲男人天堂古典| 亚洲福利视频网| 精品中文字幕在线观看| 91福利视频在线观看| 日本不卡高字幕在线2019| 国产精品美女www| 中文字幕成人在线| 亚洲天堂男人天堂| 5278欧美一区二区三区| 亚洲网站在线播放| 色老头一区二区三区| 亚洲精品乱码久久久久久金桔影视| 国产精品福利在线观看| 国内精品国产三级国产在线专| 91精品中文在线| 久久视频在线免费观看| 中日韩美女免费视频网址在线观看| 欧美日韩在线视频一区| 亚洲视频999| 国产极品精品在线观看| 永久免费精品影视网站| 亚洲999一在线观看www| 久久久国产精品免费| 九九热精品视频在线播放| 日韩成人在线视频网站| 欧洲中文字幕国产精品| 国产精品一区二区三区久久久| 亚洲午夜av电影| 国产成人精品综合| 国产精品专区一| 综合久久五月天| 欧美日韩激情视频| 日韩电影大全免费观看2023年上| 高清亚洲成在人网站天堂| 日韩亚洲精品视频| 国产精品av在线| 欧美高清理论片| 日本91av在线播放| 久久久av亚洲男天堂| 精品香蕉一区二区三区| 欧美激情一区二区三级高清视频| 成人在线播放av| 久久精品国产亚洲| 日本精品一区二区三区在线| 欧美成人手机在线| 国产视频综合在线| 亚洲高清av在线| 国产精品夫妻激情| 最近中文字幕日韩精品| 亚洲美女精品久久| 欧美第一黄网免费网站| 57pao国产成人免费| 色婷婷**av毛片一区| 亚洲成人精品视频在线观看| 欧美日本国产在线| 国产日韩欧美中文在线播放| 成人xvideos免费视频| 国产视频一区在线| 97国产精品人人爽人人做| 国产视频在线观看一区二区| 欧美在线xxx| 久久人人爽人人爽人人片av高请| 丰满岳妇乱一区二区三区| 黄色成人av在线| 成人免费福利在线| 国产日韩欧美一二三区| 欧美精品激情在线| 欧美成人免费全部| 亚洲桃花岛网站| 神马久久桃色视频| 国内精久久久久久久久久人| 欧美日韩在线免费| 激情成人中文字幕| 欧美一乱一性一交一视频| 久久青草精品视频免费观看| 国产精品香蕉在线观看| 美日韩在线视频| 亚洲自拍av在线| 日韩中文字幕av| 一区二区欧美激情| 国产视频精品自拍| 亚洲网站在线观看| 亚洲一级黄色av| 日韩高清中文字幕| 欧美精品在线免费| 成人免费视频xnxx.com| 亚洲视频视频在线| 国产精品久久综合av爱欲tv| 亚洲石原莉奈一区二区在线观看| 国产精品小说在线| 欧美性生交xxxxx久久久| 精品视频久久久| 中文字幕av一区二区| 国产精品69精品一区二区三区| 69久久夜色精品国产69乱青草| 国产精品丝袜高跟| 国产精品成人免费视频| 在线免费观看羞羞视频一区二区| 清纯唯美日韩制服另类| xxav国产精品美女主播| 国产亚洲精品激情久久| 日韩美女av在线免费观看| 久国内精品在线| 91久久国产精品91久久性色| 91精品国产综合久久久久久久久| 欧美大片va欧美在线播放| 国产精品午夜一区二区欲梦| 91色p视频在线| 性欧美亚洲xxxx乳在线观看| 91高清视频免费| 深夜福利日韩在线看| 欧美亚洲伦理www| 综合网日日天干夜夜久久| 伊人一区二区三区久久精品| 中文亚洲视频在线| 日韩欧美国产视频| 国产亚洲视频在线| 欧美亚洲国产日韩2020| 国产精品一区二区三区久久| 色婷婷av一区二区三区久久| 视频在线观看一区二区| 有码中文亚洲精品| 亚洲视频在线视频| 欧美日韩国产第一页| 91久久久久久久久久久久久| 久久久久成人网| 97av在线视频| 免费97视频在线精品国自产拍| 久久男人的天堂| 成人妇女免费播放久久久| 欧美亚洲视频一区二区| 富二代精品短视频| 精品二区三区线观看| 在线日韩av观看| 国产精品一香蕉国产线看观看| 日韩在线播放av| 欧美插天视频在线播放| 久久久国产精彩视频美女艺术照福利| 国产一区二区三区高清在线观看| 91在线免费观看网站| 日韩欧美在线播放| 欧美插天视频在线播放| 精品视频—区二区三区免费| 日韩欧美中文第一页| 色偷偷偷亚洲综合网另类| 久久精品国产电影| 91国内揄拍国内精品对白| 日韩黄色在线免费观看| 日韩一区二区三区在线播放| 狠狠久久五月精品中文字幕| 日韩久久免费视频| 中文字幕欧美专区| 在线观看久久av| 中文字幕精品www乱入免费视频| 亚洲女同精品视频| 久久亚洲精品毛片| 亚洲一区二区三区乱码aⅴ| 国产亚洲欧美aaaa| 久久男人资源视频| 91精品国产高清自在线| 欧美另类69精品久久久久9999| 98精品国产自产在线观看|