zoukankan      html  css  js  c++  java
  • 40.方式二的练习

    需求:三个窗口,卖50张票,卖完截至

    代码如下:

    class SaleTicket implements Runnable{
        
        int num = 50;//票数
        @Override
        public void run() {
            while(true) {
                synchronized ("锁") {
                    if(num>0) {
                        System.out.println(Thread.currentThread().getName()+"窗口买了"+num+"号票");
                        num--;
                    }else {
                        System.out.println(Thread.currentThread().getName()+"窗口票卖完了");
                        break;
                    }
                }
        
            }
        }
    }
    
    
    public class Demo1 {
        public static void main(String[] args) {
            SaleTicket ticket = new SaleTicket();
            Thread thread1 = new Thread(ticket,"窗口1");
            Thread thread2 = new Thread(ticket,"窗口2");
            Thread thread3 = new Thread(ticket,"窗口3");
            thread1.start();
            thread2.start();
            thread3.start();
        
        }
    }

    疑问:为什么我们的共享资源为什么不需要加static修饰?(其实这个是我没注意的)

          原来我们如果用第二个方式的话,可以看出上面代码中,我们只需要实例化一个runnable的实现类的,

          其实我们加了static修饰其实也没有影响,只是加了,它的生命周期变长了,浪费空间,没必要

  • 相关阅读:
    L3-013. 非常弹的球
    L2-020. 功夫传人
    L1-039. 古风排版
    Innobackup备份过程
    MySQL物理备份的过程
    数据库表设计
    MySQL启动排错
    redo的类型和作用
    描述undo的三个作用
    redo log和binlog的纠缠
  • 原文地址:https://www.cnblogs.com/zjdbk/p/8969265.html
Copyright © 2011-2022 走看看