A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© zzj123 黑马粉丝团   /  2017-6-13 14:08  /  2177 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

getClass方法获取函数
静态的同步函数使用的锁是该函数所属字节码文件对象,可以用getClass方法获取,也可以用当前类名.class表示。

    示例:
1.class Ticket implements Runnable{
2.       private static int num = 100;
3.      Object obj = new Object();
4.       boolean flag = true;
5.
6.       public void run(){
7.             if(flag ){
8.                   while(true ){
9.                         synchronized(Ticket.class){//this.getClass()
10.                               if(num > 0){
11.                                     try{
12.                                          Thread. sleep(10);
13.                                     } catch(InterruptedException e){
14.                                          e.printStackTrace();
15.                                     }
16.                                     System.out.println(Thread.currentThread().getName() + "...obj..." + num--);
17.                              }
18.                        }
19.                  }
20.            } else
21.                   while(true )
22.                         show();
23.      }
24.
25.      public static synchronized void show(){
26.             if(num > 0){
27.                   try{
28.                        Thread. sleep(10);
29.                  } catch(InterruptedException e){
30.                        e.printStackTrace();
31.                  }
32.                  System.out.println(Thread.currentThread().getName() + "...function..." + num--);
33.            }
34.      }
35.}
36.
37.class SynFunctionLockDemo{
38.       public static void main(String[] args){
39.            Ticket t = new Ticket();
40.            Thread t1 = new Thread(t);
41.            Thread t2 = new Thread(t);
42.            
43.            t1.start();
44.             try{
45.                  Thread. sleep(10);
46.            } catch(InterruptedException e){
47.                  e.printStackTrace();
48.            }
49.            t. flag = false ;
50.            t2.start();
51.      }
52.}
53.
复制代码
   运行结果:


……

1 个回复

正序浏览
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马