编写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; 
  } 
}
相关文章
|
6天前
|
XML 存储 JSON
Java程序部署
Java程序部署
|
7天前
|
消息中间件 分布式计算 Java
Linux环境下 java程序提交spark任务到Yarn报错
Linux环境下 java程序提交spark任务到Yarn报错
18 5
|
7天前
|
Java 编译器 数据库连接
探索Java中的异常处理:提升程序的鲁棒性
【9月更文挑战第25天】在Java的世界里,异常是那些不请自来、令人头疼的“客人”。它们悄无声息地潜入我们的代码,一旦出现,便可能导致程序崩溃或行为异常。但是,如果能够妥善管理这些异常,我们就能将潜在的灾难转变为增强程序鲁棒性和用户体验的机会。本文将通过深入浅出的方式,带领读者理解Java异常处理的重要性,并提供实用的策略来优雅地处理这些意外情况。让我们一起学习如何在Java中捕捉、处理和预防异常,确保我们的程序即使在面对不可预见的错误时也能保持稳健运行。
|
14天前
|
监控 Java 数据库
Java程序如何进行不停机更新?
Java程序如何进行不停机更新?
16 1
|
1月前
|
缓存 监控 安全
如何提高 Java 高并发程序的性能?
以下是提升Java高并发程序性能的方法:优化线程池设置,减少锁竞争,使用读写锁和无锁数据结构。利用缓存减少重复计算和数据库查询,并优化数据库操作,采用连接池和分库分表策略。应用异步处理,选择合适的数据结构如`ConcurrentHashMap`。复用对象和资源,使用工具监控性能并定期审查代码,遵循良好编程规范。
|
2月前
|
数据采集 人工智能 监控
【Azure 应用程序见解】Application Insights Java Agent 3.1.0的使用实验,通过修改单个URL的采样率来减少请求及依赖项的数据采集
【Azure 应用程序见解】Application Insights Java Agent 3.1.0的使用实验,通过修改单个URL的采样率来减少请求及依赖项的数据采集
|
2月前
|
Java jenkins Shell
还有人不会启动JAVA程序
还有人不会启动JAVA程序
16 0
|
5天前
|
安全 Java 调度
Java编程时多线程操作单核服务器可以不加锁吗?
Java编程时多线程操作单核服务器可以不加锁吗?
18 2
|
9天前
|
存储 缓存 Java
java线程内存模型底层实现原理
java线程内存模型底层实现原理
java线程内存模型底层实现原理
|
14天前
|
缓存 Java 应用服务中间件
Java虚拟线程探究与性能解析
本文主要介绍了阿里云在Java-虚拟-线程任务中的新进展和技术细节。
下一篇
无影云桌面