第九周课程总结&实验报告(七)
Java实验
实验任务详情:
完成火车站售票程序的模拟。
要求:
(1)总票数1000张;
(2)10个窗口同时开始卖票;
(3)卖票过程延时1秒钟;
(4)不能出现一票多卖或卖出负数号票的情况。
实验源码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | public class Maipiao implements Runnable { private int ticket = 1000 ; public void run() { for ( int i = 1 ; i <= 1000 ; i++) { synchronized ( this ) { if (ticket== 0 ) { System.out.println(Thread.currentThread().getName() + "票已售完!" ); break ; } if (ticket > 0 ) { ticket--; try { Thread.sleep( 0 ); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(Thread.currentThread().getName() + " 买出一张票 余票:ticket=" + ticket); } } } } } public class YOU { public static void main(String[] args) { Maipiao mp= new Maipiao(); Thread ck1 = new Thread(mp, "窗口1" ); Thread ck2 = new Thread(mp, "窗口2" ); Thread ck3 = new Thread(mp, "窗口3" ); Thread ck4 = new Thread(mp, "窗口4" ); Thread ck5 = new Thread(mp, "窗口5" ); Thread ck6 = new Thread(mp, "窗口6" ); Thread ck7 = new Thread(mp, "窗口7" ); Thread ck8 = new Thread(mp, "窗口8" ); Thread ck9 = new Thread(mp, "窗口9" ); Thread ck10 = new Thread(mp, "窗口10" ); ck1.start(); ck2.start(); ck3.start(); ck4.start(); ck5.start(); ck6.start(); ck7.start(); ck8.start(); ck9.start(); ck10.start(); } } |
实验结果:
实验结果:通过这一周的学习,我知道了
Java中线程的创建有如下三种基本形式。
1、继承Thread类,重写该类的run()方法。
2、实现java.lang.Runnable接口
3、使用Callable和Future接口创建线程。
线程的状态:
1.创建状态
2.就绪状态
3.运行状态
4.阻塞状态
5.死亡状态
我会好好学习的,争取有更大的进步。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步