为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

多线程——买票实验

2018-04-05 8页 doc 92KB 33阅读

用户头像

is_682974

暂无简介

举报
多线程——买票实验多线程——买票实验 Cinema.java public class Cinema implements Runnable { TicketSeller seller; String name1,name2,name3,name4,name5; Cinema(String s1,String s2,String s3,String s4,String s5){ seller =new TicketSeller(); name1=s1; name2=s2; name3=s3; name4=s4; name...
多线程——买票实验
多线程——买票实验 Cinema.java public class Cinema implements Runnable { TicketSeller seller; String name1,name2,name3,name4,name5; Cinema(String s1,String s2,String s3,String s4,String s5){ seller =new TicketSeller(); name1=s1; name2=s2; name3=s3; name4=s4; name5=s5; } @Override public void run() { // TODO Auto-generated method stub if(Thread.currentThread().getName().equals(name1)){ seller.sellTicket(20, 2); } else if(Thread.currentThread().getName().equals(name2)){ seller.sellTicket(20, 1); } else if(Thread.currentThread().getName().equals(name3)){ seller.sellTicket(10, 1); } else if(Thread.currentThread().getName().equals(name4)){ seller.sellTicket(10, 2); } else if(Thread.currentThread().getName().equals(name5)){ seller.sellTicket(5, 1); } } } TicketSeller.java public class TicketSeller { int fiveNumber=1,tenNumber=0,twentyNumber=0; public synchronized void sellTicket(int recerverMoney,int neddTicketNumber){ String s=Thread.currentThread().getName(); if(recerverMoney==5&&neddTicketNumber==1){ fiveNumber=fiveNumber+1; System.out.println(s+"给售票员5元钱,售票员卖给"+s+"一张票,不必找零"); } else if(recerverMoney==10){ if(neddTicketNumber==2){ tenNumber=tenNumber+1; System.out.println(s+"给售票员10元钱,售票员卖给"+s+"2张票,不必找零"); } else { while(fiveNumber<1 ){ try{ System.out.println(s+"给售票员10元钱,要买一张票"); System.out.println("售票员请"+s+"靠边等一会"); wait(); System.out.println(s+"结束等待,继续买票"); } catch(InterruptedException e){} } fiveNumber=fiveNumber-1; tenNumber=tenNumber+1; System.out.println(s+"给售票员10元钱,售票员卖给"+s+"1张票,找零5元"); } } else if(recerverMoney==20){ if(neddTicketNumber==2) { while(tenNumber<1){ try{ System.out.println(s+"给售票员20元钱,要买两张票"); System.out.println("售票员请"+s+"靠边等一会"); wait(); System.out.println(s+"结束等待,继续买票"); } catch(InterruptedException e){} } tenNumber=tenNumber-1; twentyNumber=twentyNumber+1; System.out.println(s+"给售票员20元钱,售票员卖给"+s+"2张票,找零10元"); } else { while(tenNumber<1||fiveNumber<1){ try{ System.out.println(s+"给售票员20元钱,要买一张票"); System.out.println("售票员请"+s+"靠边等一会"); wait(); System.out.println(s+"结束等待,继续买票"); } catch(InterruptedException e){} } fiveNumber=fiveNumber-1; tenNumber=tenNumber-1; twentyNumber=twentyNumber+1; System.out.println(s+"给售票员20元钱,售票员卖给"+s+"1张票,找零15元"); } } notifyAll(); } } MyThreadWork.java import java.util.*; public class MyThreakWork { public static void main(String args[]){ int i; String s1="赵",s2="钱",s3="孙",s4 = "李",s5="周"; Cinema cinema=new Cinema(s1,s2,s3,s4,s5); Thread zhao,qian,sun,li,zhou; zhao=new Thread(cinema); qian=new Thread(cinema); sun=new Thread(cinema); li=new Thread(cinema); zhou=new Thread(cinema); zhao.setName(s1); qian.setName(s2); sun.setName(s3); li.setName(s4); zhou.setName(s5); zhao.start(); qian.start(); sun.start(); li.start(); zhou.start(); } } 此时实验结果截图; 在每个Thread开始之后即MyThreadWork.java 代码改变为 import java.util.*; public class MyThreakWork { public static void main(String args[]){ int i; String s1="赵",s2="钱",s3="孙",s4 = "李",s5="周"; Cinema cinema=new Cinema(s1,s2,s3,s4,s5); Thread zhao,qian,sun,li,zhou; zhao=new Thread(cinema); qian=new Thread(cinema); sun=new Thread(cinema); li=new Thread(cinema); zhou=new Thread(cinema); zhao.setName(s1); qian.setName(s2); sun.setName(s3); li.setName(s4); zhou.setName(s5); zhao.start(); try{ Thread.sleep(100); } catch(Exception e){} qian.start(); try{ Thread.sleep(100); } catch(Exception e){} sun.start(); try{ Thread.sleep(100); } catch(Exception e){} li.start(); try{ Thread.sleep(100); } catch(Exception e){} zhou.start(); try{ Thread.sleep(100); } catch(Exception e){} } } 后的实验结果截图为
/
本文档为【多线程——买票实验】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索