Java多线程模拟电影售票过程
更新时间:2019年11月30日 09:31:11 作者:Chien d''''''''''''''''''''''''''''''''amis
这篇文章主要为大家详细介绍了Java多线程模拟电影售票过程,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
用多线程模拟电影售票过程(Java实训),供大家参考,具体内容如下
实训目的:
多线程的实现、线程同步
实训要求:
总票数和售票窗口数由键盘输入,用每个线程处理一个窗口的售票。
Test.java
package program5; import java.util.Scanner; public class Test { public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc=new Scanner(System.in); int ticks,windows; System.out.println("请输入总票数:"); ticks=sc.nextInt(); System.out.println("请输入售票窗口数:"); windows=sc.nextInt(); tickets lockThread=new tickets(); lockThread.setTickets(ticks); for(int i=1;i<=windows;i++) new Thread(lockThread,"窗口"+i).start(); } }
tickes.java
package program5; import java.util.concurrent.locks.*; public class tickets implements Runnable { private int tickets; public int getTickets() { return tickets; } public void setTickets(int tickets) { this.tickets = tickets; } private final Lock lock=new ReentrantLock(); @Override public void run() { // TODO Auto-generated method stub while(true) { lock.lock(); if(tickets>0) { try { Thread.sleep(100); System.out.println(Thread.currentThread().getName() +"正在发售第"+tickets--+"张票"); }catch(InterruptedException e) { e.printStackTrace(); }finally { lock.unlock(); } } else { System.exit(0); } } } }
结果显示:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
相关文章
java读取文件:char的ASCII码值=65279,显示是一个空字符的解决
这篇文章主要介绍了java读取文件:char的ASCII码值=65279,显示是一个空字符的解决,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2020-08-08Mybatis SqlSessionFactory与SqlSession详细讲解
SqlSessionFactory是MyBatis的核心类之一,其最重要的功能就是提供创建MyBatis的核心接口SqlSession,所以我们需要先创建SqlSessionFactory,为此我们需要提供配置文件和相关的参数2022-11-11SpringBoot整合腾讯云COS对象存储实现文件上传的示例代码
本文主要介绍了SpringBoot整合腾讯云COS对象存储实现文件上传的示例代码,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2021-12-12Mybatis-Plus中Mapper的接口文件与xml文件相关的坑记录
这篇文章主要介绍了Mybatis-Plus中Mapper的接口文件与xml文件相关的坑记录,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2024-01-01
最新评论