導航:首頁 > 編程語言 > java線程買票案例

java線程買票案例

發布時間:2025-04-29 02:57:31

A. java 線程池ThreadPoolExecutor 共同完成一個任務

importjava.util.concurrent.ExecutorService;
importjava.util.concurrent.SynchronousQueue;
importjava.util.concurrent.ThreadPoolExecutor;
importjava.util.concurrent.TimeUnit;

publicclassDemo{

publicstaticvoidmain(String[]args){
Ticketticket=newTicket(50);//多線程共享對象
SalersalerA=newSaler("售票員",ticket);
SalersalerB=newSaler("售票員B",ticket);
SalersalerC=newSaler("售票員C",ticket);

ExecutorServicethreadPool=newThreadPoolExecutor(0,10,60L,TimeUnit.MILLISECONDS,
newSynchronousQueue<Runnable>(),newThreadPoolExecutor.DiscardOldestPolicy());

threadPool.execute(salerA);
threadPool.execute(salerB);
threadPool.execute(salerC);
}
}

//售票員
classSalerimplementsRunnable{

privateStringname;
privateTicketticket;

publicSaler(Stringname,Ticketticket){
this.name=name;
this.ticket=ticket;
}

@Override
publicvoidrun(){
while(ticket.getRemain()>0){
ticket.sale(name,1);
try{
Thread.sleep(100);//延遲100ms
}catch(InterruptedExceptione){
}
}
}

}

//車票信息
classTicket{
privateintremain;//余票數量

publicTicket(intremain){
this.remain=remain;
}

//賣票
publicvoidsale(Stringname,intcount){
synchronized(this){//同步鎖,保證一張車票同一時刻只能由一個人賣
if(remain-count>-1){
remain-=count;
System.out.println("["+Thread.currentThread().getName()+"]"+name+"賣出"+count+"張車票,當前余票:"
+remain+"張");
}else{
System.out.println("票已賣完。。。");
}
}
}

publicintgetRemain(){
returnremain;
}

publicvoidsetRemain(intremain){
this.remain=remain;
}
}

B. Java語言:Java多線程怎樣創建

線程有兩種創建方式,繼承線程類和實現線程介面。都很簡單,你隨便翻一下java基礎就知道了

C. Java編程 假設有火車票1000張,創建10個線程模擬10個售票點,每個售票點100毫秒售出一張票。

packagetmp;

publicclassTest{
privatestaticintk=0;//售出票數
privatestaticintcount=1000;//總票數
(intn){
if(k<count){
k++;
System.out.println("第"+n+"售票點售出第"+k+"張票");
returntrue;
}
returnfalse;
}
{//售票點
intn;//售票點編號
publicSellPot(intn){
this.n=n;
}
publicvoidrun(){
while(sell(n)){
try{
Thread.sleep(100);
}catch(InterruptedExceptione){
e.printStackTrace();
}
}
}
}
publicstaticvoidmain(String[]args){
for(inti=1;i<=10;i++){
newSellPot(i).start();
}
}
}


//銀行匯款
publicclassTest2{
privatestaticintk=0;//總匯款
(intm,inti,intn){
k+=m;
System.out.println("第"+n+"個顧客進行第"+(i+1)+"次匯款,銀行接收總匯款"+k);
}
{//售票點
intn;//顧客編號
publicCostum(intn){
this.n=n;
}
publicvoidrun(){
for(inti=0;i<3;i++){
send(100,i,n);//匯款100
try{

Thread.sleep(100);
}catch(InterruptedExceptione){
e.printStackTrace();
}
}
}
}
publicstaticvoidmain(String[]args){
for(inti=1;i<=3;i++){
newCostum(i).start();
}
}
}

閱讀全文

與java線程買票案例相關的資料

熱點內容
採集器怎麼採集淘寶數據 瀏覽:706
word如何一次保存多個文件 瀏覽:266
光遇國際服網路錯誤怎麼解決 瀏覽:648
塞班qq影音1 瀏覽:617
word文本框工具 瀏覽:781
如何編寫簡單的編程 瀏覽:253
蘋果描述文件怎麼打開 瀏覽:70
lol內部語音文件夾 瀏覽:177
魔趣忘記鎖屏密碼 瀏覽:690
ps大文件怎麼轉成pdf 瀏覽:917
lolS3是刺客版本s4法坦 瀏覽:623
美版蘋果6s顏色有幾種 瀏覽:368
ado操作excel文件數據 瀏覽:3
win10系統刪不掉文件 瀏覽:770
lol最新61版本 瀏覽:242
什麼叫通訊大數據出行卡 瀏覽:68
什麼是創新編程教育 瀏覽:712
模具cnc編程入門先學什麼 瀏覽:606
ug線切割編程如何顯示毛坯 瀏覽:349
葫蘆俠java版下載 瀏覽:989

友情鏈接