Java公园门票,Java多线程-简单例子(门票售卖)

前言:多个售票点同时售卖门票,通过多线程同步锁实现同步售票。

1.创建JavaProject。

2827c006aacd

项目结构图

2.编写Ticket类。

/**

*

Title: Ticket

*

Description:门票类

* @author Org

* @version 1.0

*/

public class Ticket {

// 票数余量

private int restNum;

public int getRestNum() {

return restNum;

}

public void setRestNum(int restNum) {

this.restNum = restNum;

}

// 门票类构造函数

public Ticket(int restNum) {

super();

this.restNum = restNum;

}

}

3.编写TicketThread类。

/**

*

Title: TicketThread

*

Description:门票线程类

* @author Org

* @version 1.0

*/

public class TicketThread extends Thread {

// 售票点名称

private String wicketName;

// 门票类

private Ticket ticket;

// 票数余量

private int count;

// 线程构造函数

public TicketThread(String wicketName, Ticket ticket) {

this.wicketName = wicketName;

this.ticket = ticket;

count = ticket.getRestNum();

}

@Override

public void run() {

for(int i = 1; i <= count; i++){

try{

//同步锁

synchronized (ticket) {

if(ticket.getRestNum() > 0){

ticket.setRestNum(ticket.getRestNum() - 1);

Thread.sleep(100);

System.out.println(wicketName + " 合计卖出 :" + i + " 张门票" + ", 剩余:" + ticket.getRestNum() + " 张门票");

}else{

System.out.println(wicketName + " 门票抢光啦 ~");

break;

}

}

Thread.sleep(500);

} catch (InterruptedException e) {

e.printStackTrace();

}

}

}

}

4.编写测试Test类

/**

*

*

Title: Test

*

Description: 测试类

* @author Org

* @version 1.0

*/

public class Test {

public static void main(String[] args) {

// 设置票数总量为25

Ticket ticket = new Ticket(25);

// 创建3个线程

TicketThread wicket1 = new TicketThread("1号售票口", ticket);

TicketThread wicket2 = new TicketThread("2号售票口", ticket);

TicketThread wicket3 = new TicketThread("3号售票口", ticket);

TicketThread wicket4 = new TicketThread("4号售票口", ticket);

// 启动线程

wicket1.start();

wicket2.start();

wicket3.start();

wicket4.start();

}

}

5.运行结果

2827c006aacd

运行结果图

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值