编写Java程序,车站只剩 50 张从武汉到北京的车票,现有 3 个窗口售卖,用程序模拟售票的过程

简介: 编写Java程序,车站只剩 50 张从武汉到北京的车票,现有 3 个窗口售卖,用程序模拟售票的过程

需求说明:


车站只剩 50 张从武汉到北京的车票,现有 3 个窗口售卖,用程序模拟售票的过程


15.png


实现思路:


创建SellTicket类实现 Runnable 接口,定义实例变量ticket赋值50,重写run方法

在run方法内,定义while 死循环。在循环体中,调用 Thread 类的静态方法

Thread.currentThread().getName() 获取当前运行线程的名称 ,打印线程名称和ticket变量值,然后让 ticket 自减。当 ticket 小于等于 0 时,结束循环

在测试类的 main() 方法内,创建SellTicket类实例一个

使用 new Thread(Runnable target) 构造方法开辟 3 条线程,并将 Runnable 实例 sellTicket 传给形参target

依次调用 3 个 Thread 类对象的 start() 方法,启动线程


实现代码:


16.png


使用Runnable解决:https://blog.csdn.net/weixin_44893902/article/details/108815711


while循环实现:


//SellTicket售票处类实现 Runnable 接口
public class SellTicket implements Runnable {
  int ticket = 50;// 剩余票数
  @Override
  public void run() {
    //while循环实现
      while (true) { 
        if (ticket<1) { 
          break; 
        } else {
         System.out.println(Thread.currentThread().getName()+"出售第"+ticket--+"张车票"); 
        }
      }
  }
  public static void main(String[] args) {
    SellTicket sellTicket = new SellTicket();
    Thread thread1 = new Thread(sellTicket);
    thread1.setName("窗口1");
    thread1.start();
    Thread thread2 = new Thread(sellTicket);
    thread2.setName("窗口2");
    thread2.start();
    Thread thread3 = new Thread(sellTicket);
    thread3.setName("窗口3");
    thread3.start();
  }
}


for循环实现:


//for循环实现
for (; ticket > 0; ticket--) {
  System.out.println(Thread.currentThread().getName()+"出售第"+ticket+"张车票"); 
  if(ticket==0) { 
    break; 
  } 
}
相关文章
|
3月前
|
人工智能 监控 安全
智慧工地解决方案,java智慧工地程序代码
智慧工地系统融合物联网、AI、大数据等技术,实现对施工现场“人、机、料、法、环”的全面智能监控与管理,提升安全、效率与决策水平。
120 2
|
1月前
|
安全 Java
Java异常处理:程序世界的“交通规则
Java异常处理:程序世界的“交通规则
298 98
|
2月前
|
存储 Java 编译器
对比Java学习Go——程序结构与变量
本节对比了Java与Go语言的基础结构,包括“Hello, World!”程序、代码组织方式、入口函数定义、基本数据类型及变量声明方式。Java强调严格的面向对象结构,所有代码需置于类中,入口方法需严格符合`public static void main(String[] args)`格式;而Go语言结构更简洁,使用包和函数组织代码,入口函数为`func main()`。两种语言在变量声明、常量定义、类型系统等方面也存在显著差异,体现了各自的设计哲学。
|
7月前
|
存储 机器学习/深度学习 监控
如何监控员工的电脑——基于滑动时间窗口的Java事件聚合算法实现探析​
在企业管理场景中,如何监控员工的电脑操作行为是一个涉及效率与合规性的重要课题。传统方法依赖日志采集或屏幕截图,但数据量庞大且实时性不足。本文提出一种基于滑动时间窗口的事件聚合算法,通过Java语言实现高效、低资源占用的监控逻辑,为如何监控员工的电脑提供一种轻量化解决方案。
181 3
|
8月前
|
Java C语言
课时8:Java程序基本概念(标识符与关键字)
课时8介绍Java程序中的标识符与关键字。标识符由字母、数字、下划线和美元符号组成,不能以数字开头且不能使用Java保留字。建议使用有意义的命名,如student_name、age。关键字是特殊标记,如蓝色字体所示。未使用的关键字有goto、const;特殊单词null、true、false不算关键字。JDK1.4后新增assert,JDK1.5后新增enum。
151 4
|
8月前
|
搜索推荐 Java Android开发
课时146:使用JDT开发Java程序
在 Eclipse 之中提供有 JDT环境可以实现java 程序的开发,下面就通过一些功能进行演示。 项目开发流程
295 0
|
8月前
|
存储 Java 数据库连接
【YashanDB知识库】Java程序调用存储过程,在提取clob时报YAS-00004
【YashanDB知识库】Java程序调用存储过程,在提取clob时报YAS-00004
|
缓存 监控 算法
Java程序性能优化策略与实践
在当今软件开发领域,Java作为一种广泛应用的编程语言,其程序性能优化显得尤为重要。本文将介绍一些Java程序性能优化的策略和实践,帮助开发者提高代码执行效率、减少资源消耗,并优化用户体验。通过深入探讨各种优化技术和工具,读者将能够更好地理解和运用这些策略,有效提升Java应用程序的性能。
157 1
|
算法 Java 数据处理
Java程序性能优化研究
Java程序性能优化研究
171 0