1. 程式人生 > >java 實現多執行緒買票

java 實現多執行緒買票

今天同桌問了一個我一個多執行緒的問題,其實很簡單,但是,我沒有馬上解決

今天記錄一下,

synchronized 加鎖,有一點小心的是,這個只能對物件加鎖,因為所有的物件的父親都是object

其中onject 有相關的執行緒操作的方法,之前,我對共用資源使用的 int ,,所以,無法對共有資源加鎖,

因為是對一個static 資源操作,所以我有的資源都是一個源頭

class Buy extends Thread {

    private static volatile Integer ticket = 50;
    private String name;
    public Buy(String name) {
        this.name = name;
    }
    @Override
    public void run() {
        synchronized (ticket) {
            while (ticket > 1) {
                System.out.println(name + "------" + ticket);
                ticket--;
            }
        }
    }
}
public class Main {
    public static void main(String[] args) {
        Buy buyA = new Buy("A");
        Buy buyB = new Buy("B");
        Buy buyC = new Buy("C");


        buyA.start();
        buyB.start();
        buyC.start();
    }
}

相關推薦

java 實現執行

今天同桌問了一個我一個多執行緒的問題,其實很簡單,但是,我沒有馬上解決今天記錄一下,synchronized 加鎖,有一點小心的是,這個只能對物件加鎖,因為所有的物件的父親都是object其中onject 有相關的執行緒操作的方法,之前,我對共用資源使用的 int ,,所以,

Java 實現執行Thread Runnable Callable 三種方式

Java 多執行緒 java 實現 多執行緒 三種方法 1. 繼承Thread重寫 run方法。 2.實現Runnable的run方法。無返回值。一個類可以實現多個介面。 3.實現Callable的call方法。有返回值,可以丟擲執行緒錯誤。一個類可以實現多個介面。 public class

[Java][實現執行的三種方式]

目錄 本系列學習筆記簡介 多執行緒的繼承Thread類實現 程序執行緒簡介 多執行緒賣票介紹 程式碼塊 錯誤程式碼塊 正確程式碼塊

java實現執行的兩種方式

Java需要併發控制三個原因: 多執行緒環境 存在共享資源 多個執行緒操作(修改)共享資源 下面分別用繼承Thread類和實現Runnable介面倆種方式實現併發控制, 繼承Thread類 繼承Thread類方式,最後建立物件是因為會是三個不同的執行緒物件,所以

Java實現執行之Callable介面

Java實現多執行緒之Callable介面 /* * 一、建立執行執行緒的方式三:實現 Callable 介面。 相較於實現 Runnable 介面的方式,方法可以有返回值,並且可以丟擲異常。 * * 二、執行 Callable 方式,需要 FutureTask 實現類的支援,用

Java實現執行的方法

java實現多執行緒的方式有三種: 1、繼承Thread類,重寫該類的run方法(Thread類實現了Runnable介面) public class TestThread extends Thread{ /** * @param args */ public static vo

Java實現執行寫資料到檔案【佇列-檔案】

大致流程先將要寫入檔案的資料寫入到一個佇列中,然後單開一個執行緒專門讀取佇列資料寫入檔案,可以保證寫入到檔案的資料的順序,生產者類即多執行緒寫入檔案模擬package com.ldl.test.doma

java實現執行的兩種方式繼承Thread類和實現Runnable介面

 * 實現方式和繼承方式有什麼區別呢?  *         區別:  *                 繼承Thread:執行緒程式碼存放在Thread子類run方法中  *                 實現Runnable:執行緒程式碼存放在介面的子類的run方法

Java----實現執行的兩種方法及其區別

1.建立多執行緒的兩種方式 1.通過繼承Thread類實現多執行緒 class MyThread extends Thread{ //重寫run方法 public void run(){ } } //測試類:建立執行緒

二、java實現執行的方式?

一、同步?非同步?      下面兩幅圖解釋了同步非同步。            二、實現多執行緒的方式      1.繼承Thread        

Java執行實現

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

Java併發程式設計(6):Runnable和Thread實現執行的區別(含程式碼)

Java中實現多執行緒有兩種方法:繼承Thread類、實現Runnable介面,在程式開發中只要是多執行緒,肯定永遠以實現Runnable介面為主,因為實現Runnable介面相比繼承Thread類有如下優勢: 1、可以避免由於Java的單繼承特性而帶來的侷限; 2、增強程式的健壯性,程式碼能夠被多個執行

Java架構-Spring4+Springmvc+quartz實現執行動態定時排程

scheduler定時排程系統是大多行業專案都需要的,傳統的spring-job模式,個人感覺已經out了,因為存在很多的問題,特別是定時排程的追加、修改、刪除等,需要修改xml,xml的配置生效無非是熱部署灰度釋出方案或者直接停止、重啟伺服器,完全不能做到自動啟動、修復方式。 提醒

Java併發(十八):阻塞佇列BlockingQueue BlockingQueue(阻塞佇列)詳解 二叉堆(一)之 圖文解析 和 C語言的實現 多執行緒程式設計:阻塞、併發佇列的使用總結 Java併發程式設計:阻塞佇列 java阻塞佇列 BlockingQueue(阻塞佇列)詳解

阻塞佇列(BlockingQueue)是一個支援兩個附加操作的佇列。 這兩個附加的操作是:在佇列為空時,獲取元素的執行緒會等待佇列變為非空。當佇列滿時,儲存元素的執行緒會等待佇列可用。 阻塞佇列常用於生產者和消費者的場景,生產者是往佇列裡新增元素的執行緒,消費者是從佇列裡拿元素的執行緒。阻塞佇列就是生產者

java socket執行實現聊天室

java socket多執行緒實現聊天室 程式碼放在我的GitHub上點選檢視 版本1,一對一,收發有順序 /** * @Author: Hzw * @Time: 2018/4/19 11:38 * @Description: 聊天室客戶端V1.0,雙向通訊,客戶端傳

java執行系列(一):Thread、Runnable、Callable實現執行的區別

實現多執行緒 java實現多執行緒的方法有三種,分別是繼承thread類,實現runnable介面,實現callable介面(call方法有返回值) /** * 繼承Thread */ public class MyThread extends Thread{ int a = 0;

java使用 網路連線+RandomAccessFile + io 執行實現執行下載檔案並顯示實時網速

下載檔案的時候,一個大檔案切成很多片,用多執行緒下載,速度會快很多 閱讀程式碼的時候注意檢視程式碼裡面的註釋 想用多執行緒下載檔案,則, 第一:得了解  RandomAccessFile  類,這是個隨機訪問檔案類,裡面可以設定 訪問的 開始地址和結束地址,且該類可讀可

#Java執行學習,那麼如何實現執行呢?

程序和執行緒的區別: 程序:每個程序都有獨立的程式碼和資料空間(程序上下文),程序間的切換會有較大的開銷,一個程序包含1–n個執行緒。 執行緒:同一類執行緒共享程式碼和資料空間,每個執行緒有獨立的執行棧和程式計數器(PC),執行緒切換開銷小。 執行緒和程序一樣分

Java使用執行實現Socket客戶端的通訊

 要想詳細瞭解socket,大家請自行百度,我這裡只簡單介紹。   在網路中,我們可以利用ip地址+協議+埠號唯一標示網路中的一個程序。而socket程式設計就是為了完成兩個唯一程序之間的通訊(一個是客戶端,一個是伺服器端),其中用到的協議是TCP/UDP協議,它們都屬於傳輸層的協議。   TCP是基於連

Java執行實現(程序與執行的概念、Java繼承Thread類實現執行Java實現Runnable介面實現執行、Thread與Runnable的區別、實現Callable介面實現執行

1 程序與執行緒 1.1 程序與執行緒的概念 什麼是程序?   程序: 作業系統中一個程式的執行週期。(比如我們想要在電腦上登入QQ,從雙擊qq按鈕---->關閉qq這個過程就是一個程序)   多程序: 同一時刻跑多個程式。   在DOS(磁碟作業系統時