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

首頁 > 編程 > Java > 正文

Java線程同步實例分析

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

本文實例講述了Java線程同步的用法。分享給大家供大家參考。具體分析如下:

多線程的使用為我們的程序提供了眾多的方便,同時它也給我們帶來了以往沒有考慮過的麻煩。當我們使用多線程處理共享資源時意外將會發生:比如我們一起外出就餐,每個人都是一個線程,餐桌上的食物則是共享資源,當我看到紅燒雞腿上桌后立即拿起筷子直奔目標,眼看著就得手的時候,突然~~~雞腿消失了,一個距離盤子更近的線程正在得意地啃著。

為了避免上述問題的發生,Java為我們提供了“synchronized(同步化)修飾符”來避免資源沖突,你可以將資源類中某個函數或變量聲明為synchronized(同步化),每個繼承自Object的類都含有一個機鎖(Lock),它是余生俱來的,不需要編寫任何代碼來啟用它。當我們調用任何synchronized(同步化)函數時,該對象將被鎖定,對象中所有 synchronized(同步化)函數便無法被調用,直到第一個函數執行完畢并解除機鎖。

import java.awt.BorderLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.JTextArea;import javax.swing.JTextField;/** * 線程同步 * 我們模擬一個銀行存儲過程來證明線程同步的必要性以及在Java中進行線程同步的方法 * 重點:synchronized 修飾符 */public class TestMain5 extends JFrame { private MyAccounts myAccounts = null; // 我的帳號 private JTextField text = null; // 銀行存款數額顯示 private JTextArea textArea = null; // 交易過程顯示 private JButton button = null; // 開始模擬交易的按鈕 /**  * 構造一個銀行存取款界面  */ public TestMain5(){  super("線程同步測試");  myAccounts = new MyAccounts();  text = new JTextField(Integer.toString(myAccounts.inquire()), 10); // 我們在銀行中的初始存款為100  textArea = new JTextArea();  textArea.setText("交易日志:");  JScrollPane sp = new JScrollPane(textArea);  button = new JButton("開始交易");  button.addActionListener(new ActionListener(){   public void actionPerformed(ActionEvent e) {    new Bank("鐘樓支行", myAccounts, Bank.DEAL_SAVING, 800);    new Bank("高新支行", myAccounts, Bank.DEAL_SAVING, 1300);    new Bank("小寨支行", myAccounts, Bank.DEAL_FETCH, 200);    new Bank("雁塔支行", myAccounts, Bank.DEAL_FETCH, 400);    new Bank("興慶支行", myAccounts, Bank.DEAL_SAVING, 100);    new Bank("土門支行", myAccounts, Bank.DEAL_FETCH, 700);   }  });  JPanel pane = new JPanel();  pane.add(text);  pane.add(button);  this.getContentPane().add(pane, BorderLayout.NORTH);  this.getContentPane().add(sp);  this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  this.setSize(300, 200);  this.setLocationRelativeTo(null);  this.setVisible(true); } /**  * 銀行交易大廳類  * 一般銀行都會有N個交易大廳,這些大廳可以同時處理多筆業務,這正好符合多線程的特點  */ class Bank extends Thread{  /**   * 靜態字段:用于表示儲存   */  public static final int DEAL_SAVING = 0;  /**   * 靜態字段:用于表示提取   */  public static final int DEAL_FETCH = 1;  private int buy = Bank.DEAL_FETCH; // 默認使取款  private int count = 0;  private MyAccounts myAccounts = null; // 我的帳號  /**   * 構造這個銀行交易大廳   * @param name 這個交易大廳的名稱   * @param myAccounts 我的銀行帳號   * @param buy 行為,參考字段:DEAL_SAVING或DEAL_FETCH   * @param count 錢的數量   */  public Bank(String name, MyAccounts myAccounts, int buy, int count){   super(name);   this.myAccounts = myAccounts;   this.buy = buy;   this.count = count;   this.start();  }  public void run(){   int $count = 0;   if(buy == Bank.DEAL_SAVING){ // 如果是存款業務    $count = myAccounts.saving(count);   }else if(buy == Bank.DEAL_FETCH){ // 如果是取款業務    $count = myAccounts.fetch(count);   }   text.setText(Integer.toString($count));   textArea.append("/n" + this.getName() + " " + (buy == Bank.DEAL_SAVING ? "存款": "取款") + " 金額:" + count + " 結余:" + $count);  } } /**  * 我的帳號  * 進行同步測試  */ class MyAccounts{  private Integer count = 1100;  public MyAccounts(){  }  /**   * 查詢我的帳號   */  public int inquire(){   synchronized (count){    return count;   }  }  /**   * 存款業務   * @param c 存款的數量   * @return 業務辦理完成后的數量   */  public int saving(int c){   synchronized (count){    //return count += c; // 為了能更好的觀察,我們將這個簡潔的語句注釋掉    int $count = inquire(); // 先查詢帳戶中的存款    $count += c;    try {     Thread.sleep(1000); // 為了更好的觀察,使業務在此停頓1秒鐘    } catch (InterruptedException ex) {     ex.printStackTrace();    }    count = $count; // 最后將總數儲存起來    return inquire(); // 返回最新的存款數   }  }  /**   * 取款業務   * @param c 取款的數量   * @return 業務辦理完成后的數量   */  public int fetch(int c){   synchronized (count){    //return count -= c; // 為了能更好的觀察,我們將這個簡潔的語句注釋掉    int $count = inquire(); // 先查詢帳戶中的存款    $count -= c;    try {     Thread.sleep(1000); // 為了更好的觀察,使業務在此停頓1秒鐘    } catch (InterruptedException ex) {     ex.printStackTrace();    }    count = $count; // 最后將總數儲存起來    return inquire(); // 返回最新的存款數   }  } } public static void main(String [] args){  new TestMain5(); }}

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
精品久久久久久久久中文字幕| 久久久久久久电影一区| 国产日韩欧美夫妻视频在线观看| 国产欧美日韩丝袜精品一区| 国产精品成熟老女人| 亚洲图片制服诱惑| 久久久久久久久久av| 成人精品一区二区三区电影黑人| 国产伊人精品在线| 26uuu久久噜噜噜噜| 亚洲美女视频网站| 国产综合久久久久| 国产精品美女久久| 午夜精品一区二区三区在线视频| 精品国产一区二区三区久久久| 尤物yw午夜国产精品视频| 亚洲欧洲成视频免费观看| 色与欲影视天天看综合网| 欧美中在线观看| 日本精品视频在线播放| 大伊人狠狠躁夜夜躁av一区| 久久久久久高潮国产精品视| 久久久久久中文| 国产亚洲激情视频在线| 久久久免费观看| 亚洲精品乱码久久久久久金桔影视| 久久中文字幕视频| 国产精品偷伦免费视频观看的| 欧美日韩精品在线观看| 久久6免费高清热精品| 久久久久久久999精品视频| 欧美大尺度激情区在线播放| 中文字幕一区二区三区电影| 亚洲人成网站999久久久综合| 国产精品7m视频| 久久精品国产亚洲一区二区| 亚洲毛茸茸少妇高潮呻吟| 伦伦影院午夜日韩欧美限制| 大量国产精品视频| 日韩成人av网址| 黄色精品在线看| 国产69精品久久久久99| 在线日韩日本国产亚洲| 国产精品扒开腿做| 国内免费精品永久在线视频| 亚洲国产精品一区二区久| 国产精品精品视频一区二区三区| 国产伦精品一区二区三区精品视频| 亚洲第一中文字幕在线观看| 欧洲亚洲女同hd| 中文字幕精品www乱入免费视频| 97精品国产aⅴ7777| 成人久久一区二区三区| 精品久久久久久久久久久久久| 国产日韩欧美中文| 久久久久亚洲精品成人网小说| 国产精品中文字幕在线| 91欧美视频网站| 欧美极品第一页| 亚洲成人中文字幕| 亚洲精品综合久久中文字幕| 亚洲精品久久久久久久久久久久久| 91精品国产91久久久久久不卡| 黑人欧美xxxx| 亚洲免费伊人电影在线观看av| 欧美国产亚洲视频| 成人黄色av网站| 97精品伊人久久久大香线蕉| 69影院欧美专区视频| 成人高h视频在线| 欧美专区国产专区| 色偷偷噜噜噜亚洲男人| 日韩欧美成人免费视频| 日韩美女视频免费看| 亚洲综合av影视| 亚洲日本欧美中文幕| 色小说视频一区| 91在线视频成人| 国产精品999999| 亚洲第一男人av| 欧美大片大片在线播放| 欧美日韩视频在线| 亚洲色图狂野欧美| 国产91在线视频| 亚洲成人网av| 91影院在线免费观看视频| 欧美二区乱c黑人| 日韩中文字幕在线看| 亚洲精品一区中文| 欧美一级大胆视频| 久久久爽爽爽美女图片| 久久久久亚洲精品| 成人国产精品久久久| 国产亚洲福利一区| 久久久黄色av| 欧美午夜影院在线视频| 亚洲国产欧美日韩精品| 国产91精品不卡视频| 国产精品视频精品视频| 国产一区二区三区在线免费观看| 国产日韩欧美在线视频观看| 黄色精品一区二区| 久久在线免费视频| 欧美日韩国产麻豆| 国产精品视频播放| 日韩电影免费观看在线观看| 亚洲美女又黄又爽在线观看| 77777少妇光屁股久久一区| 超在线视频97| 亚洲精品久久久久久久久| 日韩av影院在线观看| 国色天香2019中文字幕在线观看| 91在线视频免费| 国内成人精品视频| 北条麻妃在线一区二区| 欧美日韩在线第一页| 国产精品久久99久久| 亚洲国产日韩欧美在线图片| 国产精品日韩av| 成人福利在线观看| 在线播放国产一区中文字幕剧情欧美| 国产欧美久久一区二区| 国内精品小视频在线观看| www.亚洲人.com| 欧美有码在线视频| 亚洲欧美激情在线视频| 久久精品人人做人人爽| 激情亚洲一区二区三区四区| 久久久久久久久国产精品| 日韩中文娱乐网| 夜色77av精品影院| 久久成人精品一区二区三区| 日韩欧美在线字幕| 亚洲成人aaa| 久久亚洲国产精品| 亚洲三级黄色在线观看| 中文字幕亚洲一区二区三区五十路| 亚洲激情国产精品| 欧美老女人bb| 啊v视频在线一区二区三区| 成人a级免费视频| 亚洲3p在线观看| 精品国产乱码久久久久久天美| 九九热99久久久国产盗摄| 亚洲精品狠狠操| 亚洲精品久久久久久久久久久久久| 国产女人18毛片水18精品| 亚洲欧美国产日韩中文字幕| 亚洲午夜未满十八勿入免费观看全集| 色婷婷综合久久久久| 97在线观看视频| 国产日韩换脸av一区在线观看| 国产精品一区二区三区久久| 最近2019中文字幕一页二页| 亚洲自拍偷拍视频| 亚洲精品国产精品国自产观看浪潮| 色综合久久悠悠| 成人性生交大片免费看视频直播| 亚洲精品丝袜日韩| 欧美精品在线第一页| 亚洲成人动漫在线播放| 国产精品美女久久久久久免费| 日韩电影大全免费观看2023年上| 91黑丝在线观看|