首页 > 编程语言 > 详细

java同步代码块

时间:2016-04-19 20:25:02      阅读:340      评论:0      收藏:0      [点我收藏+]
/**
abc三个售票窗口,售50张票。

需求:可以做到同时销售,且不能卖重叠的,以及不能超过50

同步代码块
synchronized(对象){
    同步代码块;
}

对象如同锁,持有锁的线程可以在同步中执行
没有持有锁的线程即使获得CPU的执行器,也无法执行。

同步前提:
1.多线程的代码块才需要同步,即run里的代码才需要加同步。对共享数据加同步
2.必须是多个线程使用同一个锁,才需要同步

好处:提高多线程的安全问题
弊端:多个线程需要判断锁,较为消耗资源
*/
class Tickt implements Runnable //extends Thread{
{
    private int tickt=10000;
    Object obj = new Object();
    
    public void run(){                
        while(true){ 
            synchronized(obj){    
                if(tickt>0){         
                    //try{Thread.sleep(100);}catch(InterruptedException e){}
                    System.out.println(Thread.currentThread().getName()+"售票员卖出:"+ tickt-- +"号票"); 
                }                 
          }
      }            
    }    
}


class SaleTickt{
    public static void main(String[]args){
        Tickt a = new Tickt();
        Thread t1 = new Thread(a);
        Thread t2 = new Thread(a);
        Thread t3 = new Thread(a);
        Thread t4 = new Thread(a);
        t1.start();
        t2.start();
        t3.start();
        t4.start();
    }
}


java同步代码块

原文:http://9274590.blog.51cto.com/9264590/1765358

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!