多线程售票
2021-05-28 02:00
标签:extend end 允许 java thread oid getname cat ide 先看下面的程序来售票 输出结果分析: 出现上面情况的原因分析:、 线程123都会判断
所以123线程同时进到下面代码 解决方案: 1)用synchronized关键字:synchronized是Java中的一个关键字,是一个内部锁。它可以使用在方法上和方法块上,表示同步方法和同步代码块。在多线程环境下,同步方法或者同步代码块在同一时刻只允许有一个线程在执行,其余线程都在等待获取锁,也就是实现了整体并发中的局部串行。 多线程售票 标签:extend end 允许 java thread oid getname cat ide 原文地址:https://www.cnblogs.com/YXBLOGXYY/p/14808231.html 1 package thread;
2
3 public class Ticket {
4 public static void main(String[] args) {
5 SaleWindow saleWindow1 = new SaleWindow();
6 SaleWindow saleWindow2 = new SaleWindow();
7 SaleWindow saleWindow3 = new SaleWindow();
8
9 saleWindow1.start();
10 saleWindow2.start();
11 saleWindow3.start();
12 }
13 }
14
15 class SaleWindow extends Thread {
16 private static int ticket_num = 100;
17 @Override
18 public void run() {
19 while (true) {
20 if (ticket_num ) {
21 System.out.println("售票结束");
22 break;
23 }
24 // 休眠50毫秒。模拟卖票要时间
25 try {
26 Thread.sleep(50);
27 } catch (InterruptedException e) {
28 e.printStackTrace();
29 }
30 System.out.println("当前窗口为 " + Thread.currentThread().getName() + "还剩 " + (--ticket_num) + "张票");
31
32 }
33 }
34 }
上一篇:C++的多态