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

     1 package day2_4;
     2 
     3 /**
     4  * 例子:创建三个窗口卖票,总票数为100张,使用实现Runnable接口
     5  * 因为三个线程是共享Window2对象的,所以也是共享ticket变量的,自然就不用static修饰 ticket了
     6  * 仍存在线程安全问题,待解决(还是会有多个线程卖出少量的相同号的票)
     7  *
     8  * @Author Tianhao
     9  * @create 2021-02-04-14:36
    10  */
    11 
    12 class Window2 implements Runnable {
    13     //可以不用static 修饰 ticket了
    14     private int ticket = 100;
    15 
    16     @Override
    17     public void run() {
    18 //        while (ticket>0) {
    19 //            System.out.println(Thread.currentThread().getName() + "卖票,票号:" + ticket);
    20 //            ticket--;
    21 //        }
    22 
    23         while (true) {
    24             if (ticket > 0) {
    25                 try {
    26                     Thread.sleep(100);
    27                 } catch (InterruptedException e) {
    28                     e.printStackTrace();
    29                 }
    30                 System.out.println(Thread.currentThread().getName() + "卖票,票号:" + ticket);
    31                 ticket--;
    32             } else {
    33                 break;
    34             }
    35         }
    36     }
    37 }
    38 
    39 
    40 public class WindowTest2 {
    41     public static void main(String[] args) {
    42         Window2 w = new Window2();
    43         //Thread构造器内都是同一个Window2对象w,所以共享ticket成员变量
    44         Thread t1 = new Thread(w);
    45         Thread t2 = new Thread(w);
    46         Thread t3 = new Thread(w);
    47         t1.setName("窗口1");
    48         t2.setName("窗口2");
    49         t3.setName("窗口3");
    50         t1.start();
    51         t2.start();
    52         t3.start();
    53 
    54     }
    55 }
  • 相关阅读:
    C#设置窗体最大化且不遮挡任务栏的方法
    C# Base64解码 二进制输出
    导出Excel并下载,但无法定制样式的方法!
    C# List 转Datatable
    查询sql语句耗时的方法!
    301跳转
    文章关键字加链接
    文本框样式默认文本
    JForum二次开发(一)
    MongoDB 学习笔记(三)—— 修改器的使用
  • 原文地址:https://www.cnblogs.com/zui-ai-java/p/14377415.html
Copyright © 2011-2022 走看看