1. 程式人生 > >Java多執行緒實現簡單的售票程式

Java多執行緒實現簡單的售票程式

設計一個多執行緒程式如下:設計一個火車售票模擬程式。假如火車站要有100張火車票要賣出,現在有5個售票點同時售票,用5個執行緒模擬這5個售票點的售票情況

1、要求打印出每個售票點所賣出的票號

2、各售票點不能售出相同票號的火車票

package com.hebust.java.third;

import java.util.Random;

public class SaleTicket implements Runnable {

public int total;

public int count;

public SaleTicket() {

total = 100;

count = 0;

}

public void run() {

while (total > 0) {

synchronized (this) {

if(total > 0) {

try {

//Thread.sleep(800);

Thread.sleep(new Random().nextInt(1000));

} catch (InterruptedException e) {

e.printStackTrace();

}

count++;

total--;

System.out.println(Thread.currentThread().getName() + "\t當前票號:" + count);

}

}

}

}

public static void main(String[] args) {

SaleTicket st = new SaleTicket();

for(int i=1; i<=5; i++) {

new Thread(st, "售票點" + i).start();

}

}

}

相關推薦

Java執行實現簡單售票程式

設計一個多執行緒程式如下:設計一個火車售票模擬程式。假如火車站要有100張火車票要賣出,現在有5個售票點同時售票,用5個執行緒模擬這5個售票點的售票情況 1、要求打印出每個售票點所賣出的票號 2、各售票點不能售出相同票號的火車票 package com.hebu

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

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

Java執行實現視窗售票的功能

在這個程式中我們一共售賣1-100號票,一共有4個視窗,首先我們看程式如下 package com.study.article1; /** * @func 多執行緒實現視窗賣票. * @author 張俊強~ * @time 2017/10/27

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

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

java執行實現一個簡單的水池進出水問題

需求: 有一個水池100L,有出水口和入水口,出水口和入水口不能同時開啟,入水口每次注入5L水,出水口每次出4L水,如果池子注滿水,或者池子中沒有水就停止。 使用繼承Thread類的方式編寫出水口,使用實現Runnable方式編寫入水口,執行結果。 package po

Java——執行簡單實現

中高階架構師的必經之路: 高可用、高併發、高效能網站開發 多執行緒基本概念: 多個程序同時進 執行緒:排程和執行的單位(cpu的排程) 程序:作為資源分配的單位(作業系統的分配) 執行緒是程序的一部分 使用者執行緒和守護執行緒 使用者執行緒

java執行實現售票

package com.gxk.thread; class ticketThread extends Thread { private static int ticket = 50; priv

Java-執行實現售票

假設有一百張票由四個售票點同時在賣,請用多執行緒來程式設計此售票過程(請在程式設計中避免出現一張票號被列印多次以及出現0和負數票號的情況)。 程式碼如下: package com.homew

JAVA執行實現的幾種方式及簡單示例

 JAVA多執行緒的實現方式是JAVA基礎的一個重點,看過好多次,但不經常用就容易忘記,今天做一個總結,算是把JAVA基礎再夯實一下。 Java多執行緒實現方式主要有四種:繼承Thread類、實現Runnable介面、實現Callable介面通過FutureTask包裝器來

Java 執行實現死鎖場景

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

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

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

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

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

Java執行實現的方式

Java多執行緒實現的方式有四種 1.繼承Thread類,重寫run方法 2.實現Runnable介面,重寫run方法,實現Runnable介面的實現類的例項物件作為Thread建構函式的target 3.通過Callable和FutureTask建立執行緒 4.通過執行緒池建立執行

(CSDN遷移) JAVA執行實現-實現Runnable介面

實現Runnable介面  implements Runnable 重寫run()方法 @Override public void run(){//TODO} 建立執行緒物件: Thread thread1 = new Thread(new Implement

(CSDN遷移)JAVA執行實現-單執行執行池newSingleThreadExecutor

JAVA通過Executors提供了四種執行緒池,單執行緒化執行緒池(newSingleThreadExecutor)、可控最大併發數執行緒池(newFixedThreadPool)、可回收快取執行緒池(newCachedThreadPool)、支援定時與週期性任務的執行緒池(newScheduledThre

(CSDN遷移) JAVA執行實現-可控最大併發數執行池(newFixedThreadPool)

上篇文章中介紹了單執行緒化執行緒池newSingleThreadExecutor,可控最大併發數執行緒池(newFixedThreadPool)與其最大的區別是可以通知執行多個執行緒,可以簡單的將newSingleThreadExecutor理解為newFixedThreadPool(1)。例如執行一下兩個程

Java執行實現以及執行安全筆記

Java虛擬機器允許應用程式併發地執行多個執行緒。 以下為多執行緒的實現常用的2種方法 (1)繼承Thread類,重寫run()方法      Thread本質上也是實現了Runnable介面的一個例項,代表一個執行緒的例項。啟用執行緒的唯一方法就是通過Thread類的

Java執行實現加法計算

採用多執行緒的方式實現從1到N的和 1.直接順序計算 public static void Sum(int N){ long start1 = System.currentTimeMillis(); long sum = 0;

JAVA執行實現的四種方式

         昨天自己用ExecutorService建立執行緒池做穿透測試了一下,感覺挺有意思,所以又好好的看了一下執行緒的問題,在此轉載了一篇博友的文章,感覺總結的不錯,所以分享一下. Java多執行緒實現方式主要有四種: 繼承Thread類、實現Runnable

JAVA 執行實現方式

一般實現得方式有倆種: 實現Runnable介面。該介面中的方法run(),來實現建立執行緒。 繼承Thread類。 這倆種實現執行緒得方式對比而言: 一個Thread物件只能建立一個執行緒,即使它呼叫多次的.start()也會只執行一個的執行緒。建立多個執行緒就需要多個Thread