• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

java多线程之铁路售票系统

java 搞代码 4年前 (2022-01-05) 29次浏览 已收录 0个评论

这篇文章主要为大家详细介绍了java多线程之铁路售票系统,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了java多线程之铁路售票系统的具体代码,供大家参考,具体内容如下

问题:铁路售票,一共100张,通过四个窗口卖完。

要求:分别用

继承Thread类 和 实现Runnable接口 去实现

①用继承Thread类去实现

 package com.yy.syn; public class Demo3_Ticket { /** * 铁路售票,一共100张,通过四个窗口卖完 * 用继承Thread类去实现 * 分析: *   四个窗口就相当于四条线程,100张火车票就相当于成员变量 * * */ public static void main(String[] args) { new Ticket().start();          //创建对象,第一条线程 new Ticket().start();          //创建对象,第二条线程 new Ticket().start();          //创建对象,第三条线程 new Ticket().start();          //创建对象,第四条线程 } } class Ticket extends Thread{          //继承Thread类 private static int ticket = 100;      //四条线程公用这100个成员变量 // private static Object obj = new Object();  //如果用引用数据类型的成员变量当作锁对象,必须是静态的,这里的obj对象应该设置为static静态类型 public void run(){             //重写run()方法 while(true){ synchronized (Ticket.class) {    //这里应该变为synchronized(obj){} if(ticket <= 0){ break; } System.out.println(getName() + "...这是第" + ticket-- + "号票"); } } } }

②用实现Runnable接口去实现

 package com.yy.syn; import java.security.GeneralSecurityException; public class Demo4_Ticket { /** * 铁路售票,一共100张,通过四个窗口卖完 * 用实现Runnable接口去实现 * 分析: *   四个窗口就相当于四条线程,100张火车票就相当于成员变量 * * */ public static void main(String[] args) { MyTicket mt = new MyTicket();    //这里只是创建了一次对象 new Thread(mt).start(); new Thread(mt).start(); new Thread(mt).start(); new Thread(mt).start(); /*Thread t1 = new Thread(mt); //public void start() 使该线程开始执行;Java 虚拟机调用该线程的 run 方法。多次启动一个线程是非法的。特别是当线程已经结束执行后,不能再重新启动。 t1.start(); t1.start(); t1.start(); t1.start();*/ } } class MyTicket implements Runnable{   //让MyTicket这个类去实现Runnable这个接口 private int tickets = 100;       //然后,Myticket类里面定义成员变量,这里的票只有100张 @Override public void run() { while(true){ synchronized (Ticket.class) {  //这里的锁对象也可以是this,即 synchronized (this),因为在主函数里面只创建了一次对象,这里的this就相当于主函数里面的mt if(ti<strong style="color:transparent">来源gaodaima#com搞(代@码网</strong>ckets <= 0){ break; } try{ Thread.sleep(10); } catch(InterruptedException e){ e.printStackTrace(); } System.out.println(Thread.currentThread().getName() + "...这是第" +  tickets-- + "号票" ); }                //不是Thread的子类,不能直接调用getName,需要Thread.currentThread().getName() } } private String getName() { return null; } }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持gaodaima搞代码网

以上就是java多线程之铁路售票系统的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:java多线程之铁路售票系统

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址