温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

怎么用Java多线程实现火车售票系统

发布时间:2021-11-20 11:43:57 来源:亿速云 阅读:160 作者:iii 栏目:编程语言

这篇文章主要讲解了“怎么用Java多线程实现火车售票系统”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用Java多线程实现火车售票系统”吧!

Java多线程之火车售票(Thread和Runnable的区别)

java中实现多线程的方式有两种

继承Thread类  实现Runnable接口

继承了Thread类的类,使用对象.start()启动线程实现了Runnable类的类,使用new Thread(new Runnable的实现类()).start()启动

下面有个经典例子,很适合用实现Runnable接口的类去实现。

火车售票问题简单分析:

1.票数是共用的,不能将一张票买多次。2.同时有多个售票点在出售车票,即有多个线程存在。3.当一个售票点正在进行售票操作时,其他售票点不能进行干预,此处可以用同步锁。

代码如下:

测试类

public class TicketsTest{ public static void main(String[] args) {  SakeTickets st = new SakeTickets(); Thread[] t = new Thread[3]; for (int i = 0; i < t.length; i++) { t[i] = new Thread(st,"售票口"+(i+1)); t[i].start(); }   } }

实现Runnable接口的售票类

public class SakeTickets implements Runnable{private int totalTickets =200;public void run(){ while(totalTickets>0) sale();}public void sale(){ synchronized (this) { String name = Thread.currentThread().getName(); if(totalTickets==0) System.out.println(name+" 票已售完。");  else{ totalTickets--; try { Thread.sleep(57); } catch (InterruptedException e) { e.printStackTrace(); } System.out.printf(name+" 售出一张票,还剩:%-3d张。\n",totalTickets); } }}}

Thread和Runnable的区别

如果一个类继承Thread,则不适合资源共享。但是如果实现了Runable接口的话,则很容易的实现资源共享。

感谢各位的阅读,以上就是“怎么用Java多线程实现火车售票系统”的内容了,经过本文的学习后,相信大家对怎么用Java多线程实现火车售票系统这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI