静态方法的同步代码

  1.   
  2. class Ticket implements Runnable  
  3. {  
  4.     private int tick = 1000;  
  5.       
  6.     //Object obj = new Object();  
  7.   
  8.     boolean flag = true;  
  9.   
  10.     public void run()  
  11.     {  
  12.         if(flag)//第一个进入的线程实行下面代码  
  13.         {  
  14.                 while(true)  
  15.                 {  
  16.                     //synchronized(obj)//由于同步函数的是以this对象为锁的 此处如果使用obj对象作为锁  
  17.                                         //则不能实现同步 输出的数据会出现错误 程序的安全性不能得到保证  
  18.                     synchronized(Ticket.class)//和下面的show函数使用同样的锁 可以保证同步  
  19.                     {  
  20.                         if(tick>0)  
  21.                         {  
  22.                             try{Thread.sleep(40);}catch(Exception e){}  
  23.                             System.out.println(Thread.currentThread().getName() +" .....code..."+ tick--);  
  24.   
  25.                         }  
  26.                     }  
  27.                 }  
  28.         }//第二个进入的代码实行下面代码  
  29.         else  
  30.             while(true)  
  31.                 show();//this.show();  
  32.       
  33.     }  
  34.     public static synchronized void show()//同步函数 以this为锁  
  35.     {  
  36.         if(tick>0)  
  37.         {  
  38.             try{Thread.sleep(40);}catch(Exception e){}  
  39.             System.out.println(Thread.currentThread().getName() +" .....show..."+ tick--);  
  40.         }         
  41.     }  
  42.   
  43. }  
  44.   
  45.   
  46. class ThisLockDemo  
  47. {  
  48.     public static void main(String []args)  
  49.     {  
  50.         Ticket t = new Ticket();  
  51.         Thread t1 = new Thread(t);  
  52.         Thread t2 = new Thread(t);  
  53.       
  54.         t1.start();//开启第一个线程  但不一定马上执行  
  55.           
  56.         t.flag = false;//改变标志  
  57.         try{Thread.sleep(40);}catch(Exception e){}//让主线程睡眠40毫秒  保证第一个线程先开始运行 且标志位改变  
  58.   
  59.         t2.start();   
  60.     }  
  61. }  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ygl6150373

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值