java多线程,多线程案例.doc_第1页
java多线程,多线程案例.doc_第2页
java多线程,多线程案例.doc_第3页
java多线程,多线程案例.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

public class Example8_10 public static void main(String args) String s1=张三,s2=孙大名,s3=赵中堂; Cinema canema=new Cinema(s1,s2,s3); Thread zhang,sun,zhao; zhang=new Thread(canema); sun=new Thread(canema); zhao=new Thread(canema); zhang.setName(s1); sun.setName(s2); zhao.setName(s3); zhang.start(); sun.start(); zhao.start(); class Cinema implements Runnable TicketSeller seller; String name1,name2,name3; Cinema(String s1,String s2,String s3) seller=new TicketSeller(); name1=s1; name2=s2; name3=s3; public void run() if(Thread.currentThread().getName().equals(name1) seller.sellTicket(20); else if(Thread.currentThread().getName().equals(name2) seller.sellTicket(10); else if(Thread.currentThread().getName().equals(name3) seller.sellTicket(5); class TicketSeller int fiveNumber=1,tenNumber=0,twentyNumber=0; public synchronized void sellTicket(int receiveMoney) String s=Thread.currentThread().getName(); if(receiveMoney=5) fiveNumber=fiveNumber+1; System.out.println(s+给售票员5元钱,售票员卖给+s+一张票,不必找钱); else if(receiveMoney=10) while(fiveNumber1) 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+一张票,找钱5元); else if(receiveMoney=20) while(fiveNumber1|tenNumber1) 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+一张票,找钱15元); notifyAll(); 这段代码的结果怎么是先给赵,不是应该先孙么? 可是运行的结果是先赵,后孙,后张.提问者: 夜莺声声 - 经理 四级 我来回答: 回答即可得2分,回答被采纳则获得悬赏分以及奖励20分 您还可以输入字输入内容已经达到长度限制如果需要图片来说明回答内容,可以上传图片 参考资料: 匿名回答 积分规则 回答 共 5 条看什么啊? 你连问题都没有。 回答者: 这世界无爱 - 秀才 二级 2009-7-18 11:36线程是同步执行的,各个线程执行的时间不同,导致有先后 回答者: lijiajia81 - 试用期 一级 2009-7-18 11:50我运行的结果是正确的张三给售票员20元钱售票员请张三靠边等一会孙大名给售票员10元钱,售票员卖给孙大名一张票,找钱5元赵中堂给售票员5元钱,售票员卖给赵中堂一张票,不必找钱张三结束等待,继续买票张三给售票员20元钱,售票员卖给张三一张票,找钱15元 回答者: zskzhao - 经理 五级 2009-7-18 11:53张三给售票员20元钱售票员请张三靠边等一会赵中堂给售票员5元钱,售票员卖给赵中堂一张票,不必找钱张三结束等待,继续买票张三给售票员20元钱售票员请张三靠边等一会孙大名给售票员10元钱,售票员卖给孙大名一张票,找钱5元张三结束等待,继续买票张三给售票员20元钱,售票员卖给张三一张票,找钱15元按你的程序运行是这个结果,没看到问题啊。 回答者: james_allen - 江湖新秀 四级 2009-7-18 11:53给楼主指出的是 :1.不是哪个线程先 start 就会先执行哪个线程2.本程序中没有给任何一个线程设置优先权,所以他们都是平起平做的用一个形象的例子来比喻a,b,c三个人都是市民,没有谁是特殊的a,b,c三人依次从家里出发去车站买票,难道一定是a 先买

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论