1. 程式人生 > >多執行緒例項一----三個視窗同時賣票

多執行緒例項一----三個視窗同時賣票

package com.shone.thread.ticket;

/**
 * Created by Xiao GuoJian on 2018/1/24.
 * 三個視窗同時賣票
 */

/**
 * 票
 */
class Ticket {
    private int count = 1;

    public void sale(){
        while (true) {
            synchronized (this){
                if(count>20){
                    System.out.println("票已經賣完啦");
                    break;
                } else {
                    System.out.println(Thread.currentThread().getName() + "賣的第 "+count+" 張票");
                    count++;
                }
                try {
                    Thread.sleep(200);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }

        }

    }
}

/**
 * 售票視窗
 */
class SaleWindows extends Thread{
    private Ticket ticket;

    public SaleWindows(String name,Ticket ticket){
        super(name);
        this.ticket = ticket;
    }

    @Override
    public void run() {
        super.run();
        ticket.sale();
    }
}

public class TicketDemo {
    public static void main(String[] args) {
        Ticket ticket = new Ticket();

        SaleWindows windows1 = new SaleWindows("視窗1",ticket);
        SaleWindows windows2 = new SaleWindows("視窗2",ticket);
        SaleWindows windows3 = new SaleWindows("視窗3",ticket);

        windows1.start();
        windows2.start();
        windows3.start();
    }
}


相關推薦

執行例項----視窗同時

package com.shone.thread.ticket; /** * Created by Xiao GuoJian on 2018/1/24. * 三個視窗同時賣票 */ /** * 票 */ class Ticket { private i

執行程式設計:售票視窗同時出20張

分析: 1)票數要使用一個靜態值,才能所有視窗共享(執行緒) 2)要使用執行緒同步鎖,才不會有多個視窗同時賣出一張票 程式碼: package ThreadTest; /* * 多個視窗同時賣出20張票 */ public class Station extend

執行程式設計中特性

多執行緒程式設計要確保併發程式正確地執行,必須要保證原子性、可見性以及有序性,缺一不可,不然就可能導致結果執行不正確。 1.原子性 即一個操作或者多個操作 要麼全部執行並且執行的過程不會被任何因素打斷,要麼就都不執行。 一個很經典的例子就是銀行賬戶轉賬問

Java 執行實現視窗同時

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

執行問題,執行輪流進行,每個執行進行n次操作,共執行n*n*3次操作。本程式碼用三軍攻擊做演示,通俗易懂。

package com.yyj.zxy; public class SanJunFight { /** * 三隻部隊輪流上戰場,每隻部隊在戰場上每一輪只能進行n次攻擊; * 合計攻擊300次則停止攻擊; */ private static int coun

執行(至少執行)分別列印A、B、C,要求按ABC的順序迴圈列印10次。

看到網上一道題,三個執行緒按順序列印A、B、C迴圈10次,於是自己按幾種方法也寫了一下: 一、用執行緒池、Lock鎖和condition(Object 監視器方法的使用)組合使用實現: package multithread; import java.util.concu

執行(二)Java執行,啟動四執行,兩執行,另外兩執行

  public class Test { public static void main(String[] args) { final ShareData data = new ShareData(); for (int i = 0; i < 2; i++) {

Linux c執行程式設計的4例項

在主流的作業系統中,多工一般都提供了程序和執行緒兩種實現方式,程序享有獨立的程序空間,而執行緒相對於程序來說是一種更加輕量級的多工並行,多執行緒之間一般都是共享所在程序的記憶體空間的。   Linux也不例外,雖然從核心的角度來看,執行緒體現為一種對程序的"克隆"(clon

201711671125 Java執行例項(第十週)

建立3個售票視窗同時開始銷售10張票。 原始碼: public class One {     public static void main(String[] args) {         Ti

Java 執行中。兩執行交替執行,一個輸出偶數,一個輸出奇數(方法)

public class DigitPrinterExample { public static void main(String[] args) { Number num =

執行例項——每秒顯示次系統時間(Java)

“多執行緒”學過程式設計的都知道,但我現在才算真的明白他是用來幹什麼的。就像是完成某一目的,把它分成不同方向,同時執行實施,最後由主方向完成結束。這樣就達到高效率低消耗的目的了。 每一秒顯示一次系統時間,這一專案很容易但是很容易造成死迴圈而跳不出程式從而結束了,我們就可以利

C++11執行(十):《atomic 型別詳解 std::atomic (續)》

參考連結:http://www.cnblogs.com/haippy/p/3304556.html 本文介紹C++11 標準庫中的 std::atomic 針對整形(integral)和指標型別的特化版本做了哪些改進。

Java執行)基礎

1.關於執行緒與程序的區別:執行緒指程序中的一個執行場景,也就是執行流程,同一個程序中的執行緒共享其程序中的記憶體和資源(共享的記憶體是堆記憶體和方法區記憶體,棧記憶體不共享,每個執行緒有自己的,一個執行緒一個棧。);每個程序是一個應用程式,都有獨立的記憶體空間。多執行緒的使用是為了提高程式

執行(十): 計數器CountDownLatch和CyclicBarrier

public static void main(String[] args) { System.out.println(new Date() + "\t" + Thread.currentThread().getName() + "\t\trunning..."); Th

Java執行學習筆記() wait/notify

1.wait() wait()的作用是使當前執行程式碼的執行緒進行等待, 知道接到通知(notify)或者中斷為止 wait()是Object類的方法 當執行緒處於wait,呼叫interrupt()會出現InterruptedException 在呼叫wait

Java 執行)—— 概念的引入

  併發和並行      程序和執行緒      如何建立多執行緒      第一種方法:繼承 Thread 類      第二種方法:實現 Runnable 介面      第三種方法:使用匿名內部類建立執行緒      正文      回到頂部      併發和並行      並行:指兩個或多個

java 執行種實現方式

private ThreadPoolExecutor threadPoolExecutor; /** * 獲取執行緒池 * @return */ private ThreadPoolExecutor getThreadPoolExecutor(){

Python執行例項

相關文件 Python多執行緒的實現和原理 執行緒與程序 執行緒是程序內一個執行單元,也是程序內的可排程實體。 執行緒與程序的區別: 地址空間,程序獨立空間,執行緒共享程序內的地址空間 資源分配,程序是系統資源排程及分派的基本單位 執行緒是處理器排程的

執行併發篇——件兵器

  筆者是廣州的java程式設計師,剛畢業半年,工作之餘寫部落格,如果覺得我的文章寫得不錯,可以關注我的微信公眾號(J2彬彬),裡面會有更多精彩內容。從2018年8月份開始寫部落格,希望日後寫出更多通俗易懂的技術文章與大家一同分享。 talk is cheap,show me the c

深入理解Java執行

關於java多執行緒的概念以及基本用法:java多執行緒基礎 1,停止執行緒 停止執行緒意味著線上程執行完之前停止正在做的操作,即立刻放棄當前的操作,這並不容易。停止執行緒可以用Thread.stop()方法,但是這個方法不安全,所以不建議使用,還有一個方法就是Thre