zoukankan      html  css  js  c++  java
  • 加入同步代码块解决线程安全问题--不熟练

    package com.bjpowernode.t15;

    /**
    * 电影票
    */
    public class Ticket implements Runnable {

    // 电影票总数
    private int num = 100;

    private int maoyan;

    @Override
    public void run() {
    while (true) {

    // 加入同步代码块解决线程安全问题
    synchronized (this) {
    // 当电影票售罄后,跳出循环不再执行
    if (num <= 0) {
    break;
    } else {
    if ("猫眼电影".equals(Thread.currentThread().getName())) {
    maoyan++;
    }
    // 表示卖出了一张票
    num--;
    System.out.println(Thread.currentThread().getName() + "卖出了一张,剩余:" + num);
    }
    }

    }
    if ("猫眼电影".equals(Thread.currentThread().getName())) {
    System.out.println("猫眼电影卖了" + maoyan + "张");
    }

    }

    }

    -------------------------

    package com.bjpowernode.t15;

    public class Test {

    public static void main(String[] args) {
    //创建电影票的对象
    Ticket ticket = new Ticket();

    //创建三个公司(线程)售卖电影票
    Thread t1 = new Thread(ticket,"猫眼电影");
    Thread t2 = new Thread(ticket,"糯米电影");
    Thread t3 = new Thread(ticket,"美团电影");
    t1.start();
    t2.start();
    t3.start();
    }

    }

  • 相关阅读:
    C++中派生类与基类的同名成员调用机制
    一元运算符重载
    二元运算符重载
    const修饰符在不同位置带来的效应
    C++中指针与引用的区别
    基本的查找算法
    排序算法
    指针是怎么回事
    面试总结(1)
    价值观作业
  • 原文地址:https://www.cnblogs.com/Koma-vv/p/9634545.html
Copyright © 2011-2022 走看看