卖票问题

//三个售票员卖票

import java.util.concurrent.locks.ReentrantLock;

public class SaleTickets {
    public static void main(String[] args) {
        Ticket ticket = new Ticket();
        for (int j = 1; j < 4; j++) {//开三个线程
            new Thread(() -> {
                for (int i = 0; i < 40; i++) {
                    ticket.sale();
                }
            }, "售票员" + String.valueOf(j)).start();
        }

    }

}

class Ticket {
    private static int ticketscounts = 30;
    ReentrantLock reentrantLock = new ReentrantLock();

    public void sale() {
        reentrantLock.lock();
        try {
            if (ticketscounts > 0) {
                System.out.println(Thread.currentThread().getName() + "卖掉倒数第" + ticketscounts + "");
                ticketscounts--;
            }
        } finally {
            // TODO: handle finally clause
            reentrantLock.unlock();
        }
    }

}

运行结果:(电脑性能好,参数放大十倍参能看出效果)

售票员2卖掉倒数第300票
售票员2卖掉倒数第299票
售票员2卖掉倒数第298票
售票员2卖掉倒数第297票
售票员2卖掉倒数第296票
售票员2卖掉倒数第295票
售票员2卖掉倒数第294票
售票员2卖掉倒数第293票
售票员2卖掉倒数第292票
售票员2卖掉倒数第291票
售票员2卖掉倒数第290票
售票员2卖掉倒数第289票
售票员2卖掉倒数第288票
售票员2卖掉倒数第287票
售票员2卖掉倒数第286票
售票员2卖掉倒数第285票
售票员2卖掉倒数第284票
售票员2卖掉倒数第283票
售票员2卖掉倒数第282票
售票员2卖掉倒数第281票
售票员2卖掉倒数第280票
售票员2卖掉倒数第279票
售票员2卖掉倒数第278票
售票员2卖掉倒数第277票
售票员2卖掉倒数第276票
售票员2卖掉倒数第275票
售票员2卖掉倒数第274票
售票员2卖掉倒数第273票
售票员2卖掉倒数第272票
售票员2卖掉倒数第271票
售票员2卖掉倒数第270票
售票员2卖掉倒数第269票
售票员2卖掉倒数第268票
售票员2卖掉倒数第267票
售票员2卖掉倒数第266票
售票员2卖掉倒数第265票
售票员2卖掉倒数第264票
售票员1卖掉倒数第263票
售票员1卖掉倒数第262票
售票员1卖掉倒数第261票
售票员1卖掉倒数第260票
售票员1卖掉倒数第259票
售票员1卖掉倒数第258票
售票员1卖掉倒数第257票
售票员1卖掉倒数第256票
售票员1卖掉倒数第255票
售票员1卖掉倒数第254票
售票员1卖掉倒数第253票
售票员1卖掉倒数第252票
售票员1卖掉倒数第251票
售票员1卖掉倒数第250票
售票员1卖掉倒数第249票
售票员1卖掉倒数第248票
售票员1卖掉倒数第247票
售票员1卖掉倒数第246票
售票员1卖掉倒数第245票
售票员1卖掉倒数第244票
售票员1卖掉倒数第243票
售票员1卖掉倒数第242票
售票员1卖掉倒数第241票
售票员1卖掉倒数第240票
售票员1卖掉倒数第239票
售票员1卖掉倒数第238票
售票员1卖掉倒数第237票
售票员1卖掉倒数第236票
售票员1卖掉倒数第235票
售票员1卖掉倒数第234票
售票员1卖掉倒数第233票
售票员1卖掉倒数第232票
售票员1卖掉倒数第231票
售票员1卖掉倒数第230票
售票员1卖掉倒数第229票
售票员1卖掉倒数第228票
售票员1卖掉倒数第227票
售票员1卖掉倒数第226票
售票员1卖掉倒数第225票
售票员1卖掉倒数第224票
售票员1卖掉倒数第223票
售票员1卖掉倒数第222票
售票员1卖掉倒数第221票
售票员1卖掉倒数第220票
售票员1卖掉倒数第219票
售票员1卖掉倒数第218票
售票员1卖掉倒数第217票
售票员1卖掉倒数第216票
售票员1卖掉倒数第215票
售票员1卖掉倒数第214票
售票员1卖掉倒数第213票
售票员1卖掉倒数第212票
售票员1卖掉倒数第211票
售票员1卖掉倒数第210票
售票员1卖掉倒数第209票
售票员1卖掉倒数第208票
售票员1卖掉倒数第207票
售票员1卖掉倒数第206票
售票员1卖掉倒数第205票
售票员1卖掉倒数第204票
售票员1卖掉倒数第203票
售票员1卖掉倒数第202票
售票员1卖掉倒数第201票
售票员1卖掉倒数第200票
售票员1卖掉倒数第199票
售票员1卖掉倒数第198票
售票员1卖掉倒数第197票
售票员1卖掉倒数第196票
售票员1卖掉倒数第195票
售票员1卖掉倒数第194票
售票员1卖掉倒数第193票
售票员1卖掉倒数第192票
售票员1卖掉倒数第191票
售票员1卖掉倒数第190票
售票员1卖掉倒数第189票
售票员1卖掉倒数第188票
售票员1卖掉倒数第187票
售票员1卖掉倒数第186票
售票员1卖掉倒数第185票
售票员1卖掉倒数第184票
售票员1卖掉倒数第183票
售票员1卖掉倒数第182票
售票员1卖掉倒数第181票
售票员1卖掉倒数第180票
售票员1卖掉倒数第179票
售票员1卖掉倒数第178票
售票员1卖掉倒数第177票
售票员1卖掉倒数第176票
售票员1卖掉倒数第175票
售票员1卖掉倒数第174票
售票员1卖掉倒数第173票
售票员1卖掉倒数第172票
售票员1卖掉倒数第171票
售票员1卖掉倒数第170票
售票员1卖掉倒数第169票
售票员1卖掉倒数第168票
售票员1卖掉倒数第167票
售票员1卖掉倒数第166票
售票员1卖掉倒数第165票
售票员1卖掉倒数第164票
售票员1卖掉倒数第163票
售票员1卖掉倒数第162票
售票员1卖掉倒数第161票
售票员1卖掉倒数第160票
售票员1卖掉倒数第159票
售票员1卖掉倒数第158票
售票员1卖掉倒数第157票
售票员1卖掉倒数第156票
售票员1卖掉倒数第155票
售票员1卖掉倒数第154票
售票员1卖掉倒数第153票
售票员1卖掉倒数第152票
售票员1卖掉倒数第151票
售票员1卖掉倒数第150票
售票员1卖掉倒数第149票
售票员1卖掉倒数第148票
售票员1卖掉倒数第147票
售票员1卖掉倒数第146票
售票员1卖掉倒数第145票
售票员1卖掉倒数第144票
售票员1卖掉倒数第143票
售票员1卖掉倒数第142票
售票员1卖掉倒数第141票
售票员1卖掉倒数第140票
售票员1卖掉倒数第139票
售票员1卖掉倒数第138票
售票员1卖掉倒数第137票
售票员1卖掉倒数第136票
售票员1卖掉倒数第135票
售票员1卖掉倒数第134票
售票员1卖掉倒数第133票
售票员1卖掉倒数第132票
售票员1卖掉倒数第131票
售票员1卖掉倒数第130票
售票员1卖掉倒数第129票
售票员1卖掉倒数第128票
售票员1卖掉倒数第127票
售票员1卖掉倒数第126票
售票员1卖掉倒数第125票
售票员1卖掉倒数第124票
售票员1卖掉倒数第123票
售票员1卖掉倒数第122票
售票员1卖掉倒数第121票
售票员1卖掉倒数第120票
售票员1卖掉倒数第119票
售票员1卖掉倒数第118票
售票员1卖掉倒数第117票
售票员1卖掉倒数第116票
售票员1卖掉倒数第115票
售票员1卖掉倒数第114票
售票员1卖掉倒数第113票
售票员1卖掉倒数第112票
售票员1卖掉倒数第111票
售票员1卖掉倒数第110票
售票员1卖掉倒数第109票
售票员1卖掉倒数第108票
售票员1卖掉倒数第107票
售票员1卖掉倒数第106票
售票员1卖掉倒数第105票
售票员1卖掉倒数第104票
售票员1卖掉倒数第103票
售票员1卖掉倒数第102票
售票员1卖掉倒数第101票
售票员1卖掉倒数第100票
售票员1卖掉倒数第99票
售票员1卖掉倒数第98票
售票员1卖掉倒数第97票
售票员1卖掉倒数第96票
售票员1卖掉倒数第95票
售票员1卖掉倒数第94票
售票员1卖掉倒数第93票
售票员1卖掉倒数第92票
售票员1卖掉倒数第91票
售票员1卖掉倒数第90票
售票员1卖掉倒数第89票
售票员1卖掉倒数第88票
售票员1卖掉倒数第87票
售票员1卖掉倒数第86票
售票员1卖掉倒数第85票
售票员1卖掉倒数第84票
售票员1卖掉倒数第83票
售票员1卖掉倒数第82票
售票员1卖掉倒数第81票
售票员1卖掉倒数第80票
售票员1卖掉倒数第79票
售票员1卖掉倒数第78票
售票员1卖掉倒数第77票
售票员1卖掉倒数第76票
售票员1卖掉倒数第75票
售票员1卖掉倒数第74票
售票员1卖掉倒数第73票
售票员1卖掉倒数第72票
售票员1卖掉倒数第71票
售票员1卖掉倒数第70票
售票员1卖掉倒数第69票
售票员1卖掉倒数第68票
售票员1卖掉倒数第67票
售票员1卖掉倒数第66票
售票员1卖掉倒数第65票
售票员1卖掉倒数第64票
售票员1卖掉倒数第63票
售票员1卖掉倒数第62票
售票员1卖掉倒数第61票
售票员1卖掉倒数第60票
售票员1卖掉倒数第59票
售票员1卖掉倒数第58票
售票员1卖掉倒数第57票
售票员1卖掉倒数第56票
售票员1卖掉倒数第55票
售票员1卖掉倒数第54票
售票员1卖掉倒数第53票
售票员1卖掉倒数第52票
售票员1卖掉倒数第51票
售票员1卖掉倒数第50票
售票员1卖掉倒数第49票
售票员1卖掉倒数第48票
售票员1卖掉倒数第47票
售票员1卖掉倒数第46票
售票员1卖掉倒数第45票
售票员1卖掉倒数第44票
售票员1卖掉倒数第43票
售票员1卖掉倒数第42票
售票员1卖掉倒数第41票
售票员1卖掉倒数第40票
售票员1卖掉倒数第39票
售票员1卖掉倒数第38票
售票员1卖掉倒数第37票
售票员1卖掉倒数第36票
售票员1卖掉倒数第35票
售票员1卖掉倒数第34票
售票员1卖掉倒数第33票
售票员1卖掉倒数第32票
售票员1卖掉倒数第31票
售票员1卖掉倒数第30票
售票员1卖掉倒数第29票
售票员1卖掉倒数第28票
售票员1卖掉倒数第27票
售票员1卖掉倒数第26票
售票员1卖掉倒数第25票
售票员1卖掉倒数第24票
售票员1卖掉倒数第23票
售票员1卖掉倒数第22票
售票员1卖掉倒数第21票
售票员1卖掉倒数第20票
售票员1卖掉倒数第19票
售票员1卖掉倒数第18票
售票员1卖掉倒数第17票
售票员1卖掉倒数第16票
售票员1卖掉倒数第15票
售票员1卖掉倒数第14票
售票员1卖掉倒数第13票
售票员1卖掉倒数第12票
售票员1卖掉倒数第11票
售票员1卖掉倒数第10票
售票员1卖掉倒数第9票
售票员1卖掉倒数第8票
售票员1卖掉倒数第7票
售票员1卖掉倒数第6票
售票员1卖掉倒数第5票
售票员1卖掉倒数第4票
售票员1卖掉倒数第3票
售票员1卖掉倒数第2票
售票员1卖掉倒数第1票

  

原文地址:https://www.cnblogs.com/flgb/p/11768133.html