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!!!
  • 相关阅读:
    [bzoj1063][Noi2008]道路设计【树形dp】
    [bzoj1078][SCOI2008]斜堆【可并堆】
    [bzoj3744]Gty的妹子序列【分块】【主席树】
    [bzoj3720]Gty的妹子树【树分块】
    [bzoj3438]小M的作物【最小割】
    [bzoj4518][Sdoi2016]征途【dp】
    [bzoj4260]Codechef REBXOR【trie树】
    [bzoj3307]雨天的尾巴【线段树】
    2020-2021-1 20201229 《信息安全专业导论》第二周学习总结
    我对师生关系的认识
  • 原文地址:https://www.cnblogs.com/JunkingBoy/p/14900998.html
Copyright © 2011-2022 走看看