小工具知识网

当前位置: 首页 > 行业知识 > GDPU Java 天码行空12

行业知识

GDPU Java 天码行空12

2026-10-27 13:25:34 来源:互联网转载

(一)实验目的

1、掌握JAVA中多线程的实现方法;

2、重点掌握多线程的同步与通信机制;

3、熟悉JAVA中有关多线程同步与通信的方法 ;

4、能使用多线程机制解决实际应用中的线程同步与通信问题。

(二)实验内容和步骤

1、在线售票系统

现有一个在线售票系统,总共有200张票,假设同时有5个人同时在线订票,网络传输延时为3毫秒,试编写程序模拟售票过程。要求分别使用 同步代码块 与 同步方法 实现。

进阶设计:当有人订票的数量达到10张后则退出订票系统

TicketSystem.java

public class TicketSystem{private volatile int tickets = 200; // 总票数private volatile boolean finished = false;public static void main(String[] args){TicketSystem ticketSystem = new TicketSystem();ticketSystem.bookTickets();}// 使用同步代码块实现订票public void bookTicketSyncBlock(){synchronized (this){if (finished)return;if (tickets > 0){tickets--;System.out.println(Thread.currentThread().getName() + "订到了一张票,剩余票数:" + tickets);} else{System.out.println("票已售罄。");}}}// 使用同步方法实现订票public synchronized boolean bookTicketSyncMethod(){if (finished)return false;if (tickets > 0){tickets--;System.out.println(Thread.currentThread().getName() + "订到了一张票,剩余票数:" + tickets);return true;} else{System.out.println("票已售罄");return false;}}// 模拟订票过程public void bookTickets(){Thread[] threads = new Thread[5];for (int i = 0; i  {for (int j = 0; j  

运行结果

Thread-1订到了一张票,剩余票数:199Thread-5订到了一张票,剩余票数:198Thread-4订到了一张票,剩余票数:197Thread-3订到了一张票,剩余票数:196Thread-2订到了一张票,剩余票数:195Thread-5订到了一张票,剩余票数:194Thread-2订到了一张票,剩余票数:193Thread-1订到了一张票,剩余票数:192Thread-3订到了一张票,剩余票数:191Thread-4订到了一张票,剩余票数:190Thread-2订到了一张票,剩余票数:189Thread-5订到了一张票,剩余票数:188Thread-4订到了一张票,剩余票数:187Thread-1订到了一张票,剩余票数:186Thread-3订到了一张票,剩余票数:185Thread-4订到了一张票,剩余票数:184Thread-1订到了一张票,剩余票数:183Thread-3订到了一张票,剩余票数:182Thread-2订到了一张票,剩余票数:181Thread-5订到了一张票,剩余票数:180Thread-5订到了一张票,剩余票数:179Thread-3订到了一张票,剩余票数:178Thread-1订到了一张票,剩余票数:177Thread-2订到了一张票,剩余票数:176Thread-4订到了一张票,剩余票数:175Thread-4订到了一张票,剩余票数:174Thread-3订到了一张票,剩余票数:173Thread-5订到了一张票,剩余票数:172Thread-1订到了一张票,剩余票数:171Thread-2订到了一张票,剩余票数:170Thread-5订到了一张票,剩余票数:169Thread-2订到了一张票,剩余票数:168Thread-4订到了一张票,剩余票数:167Thread-1订到了一张票,剩余票数:166Thread-3订到了一张票,剩余票数:165Thread-1订到了一张票,剩余票数:164Thread-5订到了一张票,剩余票数:163Thread-4订到了一张票,剩余票数:162Thread-2订到了一张票,剩余票数:161Thread-3订到了一张票,剩余票数:160Thread-2订到了一张票,剩余票数:159Thread-3订到了一张票,剩余票数:158Thread-4订到了一张票,剩余票数:157Thread-5订到了一张票,剩余票数:156Thread-1订到了一张票,剩余票数:155Thread-1订到了一张票,剩余票数:154

2、坦克大战

在坦克大战游戏当中,我方坦克和敌方坦克均可以发射炮弹。现只考虑我方坦克发射炮弹的情况,在没有升级前,我方坦克发射的炮弹只有在碰到敌方坦克、障碍物爆炸或越过边界后(可以使用线程休眠一定时间来模拟)才能发射下一发炮弹。请编写程序模拟我方坦克发射炮弹的过程。

Game.java

public class Game{public static void main(String[] args){Tank friendlyTank = new Tank("我方坦克");// 模拟我方坦克连续发射炮弹for (int i = 0; i  

运行结果

上一篇:怎么把模组加到服务器里?

下一篇:小鹿乱撞科技请问,小鹿乱撞公司网络销售的工作可以兼职吗