欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java多線程之鐵路售票系統(tǒng)

 更新時間:2019年07月13日 15:57:46   作者:beyond諺語  
這篇文章主要為大家詳細介紹了java多線程之鐵路售票系統(tǒng),具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了java多線程之鐵路售票系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下

問題:鐵路售票,一共100張,通過四個窗口賣完。

要求:分別用

繼承Thread類 和 實現(xiàn)Runnable接口 去實現(xiàn)

①用繼承Thread類去實現(xiàn)

package com.yy.syn;

public class Demo3_Ticket {
/**
 * 鐵路售票,一共100張,通過四個窗口賣完
 * 用繼承Thread類去實現(xiàn)
 * 分析:
 *   四個窗口就相當于四條線程,100張火車票就相當于成員變量
 * 
 * */
  public static void main(String[] args) {
    new Ticket().start();          //創(chuàng)建對象,第一條線程
    new Ticket().start();          //創(chuàng)建對象,第二條線程
    new Ticket().start();          //創(chuàng)建對象,第三條線程
    new Ticket().start();          //創(chuàng)建對象,第四條線程

  }

}

class Ticket extends Thread{          //繼承Thread類
  private static int ticket = 100;      //四條線程公用這100個成員變量
// private static Object obj = new Object();  //如果用引用數(shù)據(jù)類型的成員變量當作鎖對象,必須是靜態(tài)的,這里的obj對象應(yīng)該設(shè)置為static靜態(tài)類型
  public void run(){             //重寫run()方法
    while(true){
      synchronized (Ticket.class) {    //這里應(yīng)該變?yōu)閟ynchronized(obj){}
        if(ticket <= 0){
          break;
        }
        System.out.println(getName() + "...這是第" + ticket-- + "號票");

      }
    }
  }
}

②用實現(xiàn)Runnable接口去實現(xiàn)

package com.yy.syn;

import java.security.GeneralSecurityException;

public class Demo4_Ticket {
  /**
   * 鐵路售票,一共100張,通過四個窗口賣完
   * 用實現(xiàn)Runnable接口去實現(xiàn)
   * 分析:
   *   四個窗口就相當于四條線程,100張火車票就相當于成員變量
   * 
   * */
  public static void main(String[] args) {
    MyTicket mt = new MyTicket();    //這里只是創(chuàng)建了一次對象
    new Thread(mt).start();
    new Thread(mt).start();
    new Thread(mt).start();
    new Thread(mt).start();

    /*Thread t1 = new Thread(mt);
    //public void start() 使該線程開始執(zhí)行;Java 虛擬機調(diào)用該線程的 run 方法。多次啟動一個線程是非法的。特別是當線程已經(jīng)結(jié)束執(zhí)行后,不能再重新啟動。 
    t1.start();
    t1.start();
    t1.start();
    t1.start();*/

  }

}
class MyTicket implements Runnable{   //讓MyTicket這個類去實現(xiàn)Runnable這個接口
  private int tickets = 100;       //然后,Myticket類里面定義成員變量,這里的票只有100張

  @Override
  public void run() {
    while(true){
      synchronized (Ticket.class) {  //這里的鎖對象也可以是this,即 synchronized (this),因為在主函數(shù)里面只創(chuàng)建了一次對象,這里的this就相當于主函數(shù)里面的mt
        if(tickets <= 0){
          break;
        }
        try{
          Thread.sleep(10);
        } catch(InterruptedException e){
          e.printStackTrace();
        }
        System.out.println(Thread.currentThread().getName() + "...這是第" +  tickets-- + "號票" );
      }                //不是Thread的子類,不能直接調(diào)用getName,需要Thread.currentThread().getName()
    }
  }

  private String getName() {

    return null;
  }

}

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java中float類型的范圍及其與十六進制的轉(zhuǎn)換例子

    Java中float類型的范圍及其與十六進制的轉(zhuǎn)換例子

    這篇文章主要介紹了Java中float類型的范圍及其與十六進制的轉(zhuǎn)換例子,是Java入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-10-10
  • java如何根據(jù)用戶請求獲取ip地址并解析省市信息

    java如何根據(jù)用戶請求獲取ip地址并解析省市信息

    根據(jù)當前用戶本地IP地址,查詢IP地址庫,獲取IP所在的省市信息,目前有多種方式實現(xiàn)該功能,這篇文章主要給大家介紹了關(guān)于java如何根據(jù)用戶請求獲取ip地址并解析省市信息的相關(guān)資料,需要的朋友可以參考下
    2023-12-12
  • Java爬蟲實戰(zhàn)抓取一個網(wǎng)站上的全部鏈接

    Java爬蟲實戰(zhàn)抓取一個網(wǎng)站上的全部鏈接

    這篇文章主要介紹了JAVA使用爬蟲抓取網(wǎng)站網(wǎng)頁內(nèi)容的方法,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧。
    2016-10-10
  • spring boot在啟動項目之后執(zhí)行的實現(xiàn)方法

    spring boot在啟動項目之后執(zhí)行的實現(xiàn)方法

    在開發(fā)時有時候需要在整個應(yīng)用開始運行時執(zhí)行一些特定代碼,比如初始化環(huán)境,下面這篇文章就來給大家介紹了關(guān)于spring boot在啟動項目之后執(zhí)行自己要執(zhí)行的東西的實現(xiàn)方法,文中給出了詳細的示例代碼,需要的朋友可以參考下。
    2017-09-09
  • Java WebService 簡單實例(附實例代碼)

    Java WebService 簡單實例(附實例代碼)

    本篇文章主要介紹了Java WebService 簡單實例(附實例代碼), Web Service 是一種新的web應(yīng)用程序分支,他們是自包含、自描述、模塊化的應(yīng)用,可以發(fā)布、定位、通過web調(diào)用。有興趣的可以了解一下
    2017-01-01
  • Java中讀寫鎖ReadWriteLock的原理與應(yīng)用詳解

    Java中讀寫鎖ReadWriteLock的原理與應(yīng)用詳解

    Java并發(fā)編程提供了讀寫鎖,主要用于讀多寫少的場景,今天我們就重點來講解讀寫鎖ReadWriteLock的原理與應(yīng)用場景,感興趣的可以了解一下
    2022-09-09
  • 關(guān)于工廠方法模式的Java實現(xiàn)

    關(guān)于工廠方法模式的Java實現(xiàn)

    這篇文章主要介紹了關(guān)于工廠方法模式的Java實現(xiàn)講解,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Idea里github的圖形化操作配置方法

    Idea里github的圖形化操作配置方法

    這篇文章主要介紹了Idea里github的圖形化操作配置方法,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-02-02
  • java集合——Java中的equals和hashCode方法詳解

    java集合——Java中的equals和hashCode方法詳解

    本篇文章詳細介紹了Java中的equals和hashCode方法詳解,Object 類是所有類的父類,非常具有實用價值,需要的朋友可以參考下。
    2016-10-10
  • Java FtpClient 實現(xiàn)文件上傳服務(wù)

    Java FtpClient 實現(xiàn)文件上傳服務(wù)

    本文主要對Java FtpClient實現(xiàn)簡單的圖片上傳到服務(wù)器的方法進行介紹,并且展示的小demo中,對配置過程中主要碰到的問題:關(guān)于文件權(quán)限的問題也進行了說明,下面跟著小編一起來看下吧
    2016-12-12

最新評論