码迷,mamicode.com
首页 > 其他好文 > 详细

方式二的练习

时间:2018-04-28 20:59:05      阅读:149      评论:0      收藏:0      [点我收藏+]

标签:code   资源   getname   err   rri   为什么   star   实例   实现   

需求:三个窗口,卖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修饰其实也没有影响,只是加了,它的生命周期变长了,浪费空间,没必要

 

方式二的练习

标签:code   资源   getname   err   rri   为什么   star   实例   实现   

原文地址:https://www.cnblogs.com/zjdbk/p/8969265.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!