zoukankan      html  css  js  c++  java
  • 三个窗口卖票(继承Thread方式创建线程)之线程安全问题

     1 package day2_4;
     2 
     3 /**
     4  * 例子:创建三个窗口卖票,总票数为100张,使用继承Thread的方式
     5  * 因为没有线程对象都有自己的ticket,所以每个窗口都卖100张票
     6  * 解决方法时将ticket改为 static,但仍然有问题:执行过程中都会卖相同号的票
     7  * 存在线程安全问题,待解决
     8  *
     9  *
    10  * @Author Tianhao
    11  * @create 2021-02-04-11:44
    12  */
    13 
    14 
    15 class Window extends Thread {
    16 
    17 //    private int ticket = 100;
    18 
    19     //解决方案
    20     private static int ticket = 1000;
    21 
    22 
    23     @Override
    24     public void run() {
    25         while (true) {
    26             if (ticket > 0) {
    27                 System.out.println(getName() + "卖票,票号:" + ticket);
    28                 ticket--;
    29             } else {
    30                 break;
    31             }
    32         }
    33     }
    34 }
    35 
    36 public class WindowTest {
    37     public static void main(String[] args) {
    38         Window window = new Window();
    39         window.setName("窗口1");
    40         window.start();
    41 
    42         Window window2 = new Window();
    43         window2.setName("窗口2");
    44         window2.start();
    45 
    46         Window window3 = new Window();
    47         window3.setName("窗口3");
    48         window3.start();
    49     }
    50 
    51 }
  • 相关阅读:
    Valid Parentheses
    Remove Nth Node From End of List
    守护线程、守护进程
    4Sum
    Letter Combinations of a Phone Number
    3sum closest
    Excel Sheet Column Number
    Majority Element
    Balanced Binary Tree
    Maximum Depth of Binary Tree
  • 原文地址:https://www.cnblogs.com/zui-ai-java/p/14377395.html
Copyright © 2011-2022 走看看