1. 程式人生 > >運用多執行緒實現火車票買票的案例

運用多執行緒實現火車票買票的案例

1.建立多執行緒類繼承Runnable
package test3;

public class TicketThread implements Runnable{
int ticket = 100;
Object obj = new Object();
public void run() {
//method(); //method是實現了同步方法,可以解決火車票出現的問題,
while(true) {
synchronized (obj) { //也可以在run()裡面採用同步程式碼塊的形式,來解決出現的異常
if(ticket>0) {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()+”:”+ticket–);
}
}
}

}
private synchronized void method() {
    while(true) {
            if(ticket>0) {
                try {
                    Thread.sleep(100);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                System.out.println(Thread.currentThread().getName()+":"+ticket--);              
        }       
    }
}

}

2.實現多執行緒

package test3;

public class TicketThreadDemo {
public static void main(String[] args) {
TicketThread tr = new TicketThread();

    Thread t = new Thread(tr);
    t.setName("視窗一");       

    Thread t2 = new Thread(tr);
    t2.setName("視窗二");

    Thread t3 = new Thread(tr);
    t3.setName("視窗三");

    t.start();
    t2.start();
    t3.start();
    }

}

相關推薦

運用執行實現火車票案例

1.建立多執行緒類繼承Runnable package test3; public class TicketThread implements Runnable{ int ticket = 100; Object obj = new O

java 執行 實現視窗功能

class hello implements Runnable{       private int ticket = 5;  //5張票       public  synchronized  void run() {         for (int i=0; i<

執行(模擬)-----java基礎知識總結

這次的的問題引入的比較深入,如果看了這篇部落格,不看下一篇,你會很懵逼。 程式碼: 1 package com.day13.math; 2 /** 3 * 類說明 :模擬三個視窗同時售票 4 * @author 作者 : chenyanlong 5 * @versi

運用執行實現兩個執行+1,兩個執行-1;執行安全+內部類

public class Test { public int j = 0; public static void main(String[] args) { Test lx = new Test(); Add add = lx.new A

Java 執行實現個視窗同時賣

建立執行緒的第二種方式:實現Runable介面 步驟: 1,定義類實現Runnable介面 2,覆蓋Runnable介面中的run方法。將執行緒要執行的程式碼存放在該run方法中。 3,通過Thread類建立執行緒物件。 4,將Runnable介面的子類物件作為實際引數傳遞

Java用執行實現

    Java小白一個,剛開始學習執行緒,在這個過程中遇到了一些麻煩,經過2天的努力,終於弄懂了用多執行緒實現賣票的程式,嗯嗯,記錄一下!public class TicketImpDemo { public static void main(String[] args)

Java執行實現電影院售票案例

某電影院目前正在上映賀歲大片,共有100張票,而它有3個售票視窗,請設計一個程式模擬該電影院售票。 定義Sell類實現Runnable介面,很好的解決了單繼承共享資源問題 public class Sell implements Runnable { // 定義100張票,三個售票

Java 執行實現死鎖場景

簡述: 《Java 程式設計思想》  P718 ~ P722 模擬死鎖的場景, 三個人 三根筷子,每個人需要拿到身邊的兩根筷子才能開始吃飯 出現死鎖的場景是,三個人都拿到了右邊的筷子,但是由於筷子都被搶佔,均無法獲得左邊的筷子 Chopstick.java

【Java筆記】執行實現簡單的非同步運算

實現Callable介面,重寫call()方法,使操作執行緒池時能帶有返回值的效果: import java.util.concurrent.Callable; public class GetSumCallable implements Callable<Integer> {

二、執行實現簡單的socket通訊例項(TCP)

1.伺服器端 import java.io.*; import java.net.ServerSocket; import java.net.Socket; /** * 類功能描述:先啟動伺服器端,再啟動客戶端 * * @author:*** * @createTime:2018/

利用python執行實現區塊鏈paxos演算法解決使用者共識

本來是做python 開發的老闆最近讓做區塊鏈也沒有頭緒從網上找了點視訊看著照的敲了了下感覺是自己寫過最多的程式碼啦 怪我才疏學淺  哈哈哈-- import threading, socket, pickle, queue class Message(object): MS

python 通過執行實現Excel 批量更新商品價格

import openpyxl import threading wb = openpyxl.load_workbook('produceSales.xlsx') sheet = wb.active all_info = [] for row in sheet.rows: child

執行實現UDP協議傳送、接收資料

  放碼過來吧!  public class ChatRoom { public static void main(String[] args) throws SocketException { DatagramSocket sendSocket =

MySQL 原始碼分析 Innodb緩衝池刷髒的執行實現

簡介 為了提高效能,大多數的資料庫在操作資料時都不會直接讀寫磁碟,而是中間經過緩衝池,將要寫入磁碟的資料先寫入到緩衝池裡,然後在某個時刻後臺執行緒把修改的資料刷寫到磁碟上。MySQL的InnoDB引擎也使用緩衝池來快取從磁碟讀取或修改的資料頁,如果當前資料庫需要操作的資料集比緩衝池中的空閒頁面大

Python進階(二十六)-執行實現同步的四種方式

分享一下我的偶像大神的人工智慧教程!http://blog.csdn.net/jiangjunshow 也歡迎轉載我的文章,轉載請註明出處 https://blog.csdn.net/mm2zzyzzp Python進階(二十六)-多執行緒實現同步的四種方式

Qt中採用執行實現Socket程式設計

      本文介紹的是Qt中採用多執行緒Socket程式設計,由於工作專案的需要,使用Qt的socket程式設計。Qt裡的example是個不錯的教程,但是當我把程式碼移植

執行實現udp網路通訊

本章節將介紹主執行緒與子執行緒的關係;使用udp利用多執行緒在python環境下實現全雙工通訊程式碼的兩種實現。(未完待續。。。) 一、主執行緒與子執行緒的關係: 1,若主執行緒無程式碼執行,主執行緒將等待子執行緒結束而結束。 2,執行緒的執行並無先後順序。 3,若主執行緒因特殊原因先結束,子執行緒也

java:執行(實現Runnable的原理)及二種方式的區別

* 1,看Thread類的建構函式,傳遞了Runnable介面的引用  * 2,通過init()方法找到傳遞的target給成員變數的target賦值 * 3,檢視run方法,發現run方法中有判斷,如果target不為null就會呼叫Runnable介面子類物件的run方法 *

執行實現通訊

                                          &nb

執行實現存款取款

                                          多執行