1+ package com .brianway .learning .java .multithread .synchronize .exmaple10 ;
2+
3+ /**
4+ * Created by brian on 2016/4/13.
5+ */
6+
7+ import org .omg .CORBA .PUBLIC_MEMBER ;
8+
9+ /**
10+ * P101
11+ * 验证同步sychronized(class)代码块的作用
12+ * 顺便验证了下static方法是不能复写的
13+ * @see ServiceSub,ServiceSub2
14+ */
15+ public class Run10_synBlockMoreObjectOneLock {
16+ public static void main (String [] args ) {
17+ //testSub();
18+ //testSub2();
19+ testBlock ();
20+ }
21+
22+ /**
23+ * 验证同步sychronized(class)代码块的作用
24+ */
25+ public static void testBlock (){
26+ final ServiceSub service1 = new ServiceSub ();
27+ final ServiceSub service2 = new ServiceSub ();
28+
29+ Thread a = new Thread (){
30+ @ Override
31+ public void run () {
32+ service1 .printA ();
33+ }
34+ };
35+ a .setName ("A" );
36+ a .start ();
37+ Thread b = new Thread (){
38+ @ Override
39+ public void run () {
40+ service2 .printB ();
41+ }
42+ };
43+ b .setName ("B" );
44+ b .start ();
45+ }
46+
47+ /**
48+ * testSub断点调试结果是运行的Service类的printA方法
49+ */
50+ public static void testSub (){
51+ ServiceSub service1 = new ServiceSub ();
52+ ServiceSub service2 = new ServiceSub ();
53+
54+ ThreadA a = new ThreadA (service1 );
55+ a .setName ("A" );
56+ a .start ();
57+ ThreadB b = new ThreadB (service2 );
58+ b .setName ("B" );
59+ b .start ();
60+ }
61+
62+ /**
63+ * testSub2断点调试结果是运行的Service类的printA方法
64+ */
65+ public static void testSub2 (){
66+ ServiceSub2 service1 = new ServiceSub2 ();
67+ ServiceSub2 service2 = new ServiceSub2 ();
68+
69+ ThreadA a = new ThreadA (service1 );
70+ a .setName ("A" );
71+ a .start ();
72+ ThreadB b = new ThreadB (service2 );
73+ b .setName ("B" );
74+ b .start ();
75+ }
76+
77+
78+ }
79+
80+
81+ /*
82+ 输出:
83+ In ServiceSub
84+ 线程名:A 在 1460480421944进入printA
85+ 线程名:A 在 1460480423944离开printA
86+ 线程名:B 在 1460480423944进入printB
87+ 线程名:B 在 1460480423944离开printB
88+
89+ ---------
90+ 也可能:
91+ 线程名:B 在 1460480476089进入printB
92+ 线程名:B 在 1460480476089离开printB
93+ In ServiceSub
94+ 线程名:A 在 1460480476089进入printA
95+ 线程名:A 在 1460480478089离开printA
96+
97+ */
0 commit comments