zoukankan      html  css  js  c++  java
  • 6.18Java多线程同步方法实现DemoNo2

    6.18Java多线程同步方法实现DemoNo2

    使用同步方法重写购票demo

    package iostudy.synchro;

    /**
    * 模拟买火车票
    */
    public class Happy12306 {
       public static void main(String[] args) {

           /*实例化资源类*/
           Web12306 web12306 = new Web12306(4, "Happy!");

           /*实例化代理对象*/
           new Passenger(2, web12306, "Jun").start();
           new Passenger(1, web12306, "Harden").start();

      }
    }

    /**
    * 创建乘客资源类
    */
    class Passenger extends Thread{

       /*设置资源*/
       int seats;

       public Passenger(int seats, Runnable target, String name){
           super(target, name);
           this.seats = seats;
      }
    }

    /**
    * 另一个资源类
    */
    class Web12306 implements Runnable{

       /*设置资源*/
       int available;
       String name;

       /*构造器*/
       public Web12306(int available, String name){
           this.available = available;
           this.name = name;
      }

       /**
        * 重写run方法,思考如何获得参数
        */
       public void run(){
           /*通过强制转型的方法拿到seats的值*/
           Passenger p = (Passenger) Thread.currentThread();
           boolean flag = this.bookTickets(p.seats);
           if (flag){
               System.out.println("出票成功!" + Thread.currentThread().getName()
               + "位置为" + p.seats);
          }else {
               System.out.println("出票失败" + Thread.currentThread().getName()
               + "位置不够!!");
          }
      }

       /**
        * 购买方法
        */
       public synchronized boolean bookTickets(int seats){
           System.out.println("可用位置为:" + available);
           if (seats>available){
               return false;
          }

           available -= seats;
           return true;

      }
    }
    梳理
    • 需要使用同步方法保证数据安全

    • 怎么与乘客交互?

      • 乘客继承Thread类

        • 好处:可以在子类当中+线程变量

      • 延续父类的构造器,进行类型强制转型

    • 拿到结果

    It's a lonely road!!!
  • 相关阅读:
    openGL 纹理05
    音视频系列文章
    webrtc系列文章
    ! [rejected] master -> master (non-fast-forward)
    openGL 预定义变量04
    Android项目实战--手机卫士24--程序锁的实现以及逻辑
    大数记录之,大数乘整型数nyoj832
    与IO相关的等待事件troubleshooting-系列9
    发布文章时多少天、多少小时、多少分前发布功能
    CSS3之边框图片border-image
  • 原文地址:https://www.cnblogs.com/JunkingBoy/p/14900998.html
Copyright © 2011-2022 走看看