java-利用多線程Runnable,公用一個參數問題

來源:互聯網
上載者:User

標籤:rate   圖片   try   except   視窗   list   rup   huawei   擷取   

案例:

售貨員賣票問題,一個旅遊景點有40張票,開啟了兩個買票的視窗,請用線程的方式,進行類比售貨員賣票過程,並進行分析。

思路:景點的40張票是一個共用票池,當進行售票時,進行票數確認售票和票數-1,為保證賣的票不是同一張票,必須進行加鎖並進行票數判斷

  使兩個線程共用一個安全的資料,保障資料安全。

 

//線程函數:MyThread3.java
/** * 售票線程 * 進行售票線程的類比,利用Runnable介面實現重寫run方法,保證線程的安全 * @author [Light](必須) * @see [run()](可選) * @since [version 1.0] (必須) */ public class MyThread3 implements Runnable{      //售票數 int num=40;     //設定鎖旗標 Object lock=new Object(); @Override public void run() { // TODO Auto-generated method stub        //迴圈開始售票 while(num>0){ //進行加鎖,擷取鎖 synchronized (lock) { //判斷是否售完 if(num>0) {                         //類比售票過程 System.out.println(Thread.currentThread().getName()+ "賣出第"+num+"張票"); num--; } try {                        //進行睡眠,暫時放棄cpu的使用,但不釋放鎖 Thread.currentThread().sleep(500); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }}  
//主函數MyTest.java/************************************************************ Copyright (C), 1988-1999, Huawei Tech. Co., Ltd. FileName: test.cpp Author: Light Version : version1.0Date: 2018/7/11Description: //類比售貨員售票 Version: // 版本資訊 1.開啟兩個進程,通過Runnable介面實現多線程 2.保證兩個進程公用一個售票參數Function List: // 主要函數及其功能 1.Thred3售票線程2.Thred3.start();開啟線程 History: // 曆史修改記錄 <author> <time> <version > <desc> Light 2018/7/11 1.0 build this moudle ***********************************************************/ public class MyTest {    //主函數 public static void main(String[] args) { // TODO Auto-generated method stub     //建立MyThread3線程 Runnable myThread3=new MyThread3();     //開啟兩個線程 Thread t1=new Thread(myThread3); Thread t2=new Thread(myThread3); t1.start(); t2.start(); }}

  最終的運行結果:

從結果可以看出,開啟的兩個線程公用了同一個售票池,進行售票,通過加鎖,實現了每一張票對每一人的售賣,最終進行樣本的類比。

 

java-利用多線程Runnable,公用一個參數問題

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.