1+ package com .brianway .learning .java .multithread .lock .example3 ;
2+
3+ /**
4+ * Created by Brian on 2016/4/15.
5+ */
6+
7+ /**
8+ * P215
9+ * 实现生产者/消费者模式,多对多交替打印
10+ * signal()会假死
11+ * signalAll()
12+ */
13+ public class Run3_ConditionManyToMany {
14+ public static void main (String [] args ) {
15+ MyService service = new MyService ();
16+ ThreadA [] threadAs = new ThreadA [10 ];
17+ ThreadB [] threadBs = new ThreadB [10 ];
18+ for (int i =0 ;i <10 ;i ++){
19+ threadAs [i ] = new ThreadA (service );
20+ threadBs [i ] = new ThreadB (service );
21+ threadAs [i ].start ();
22+ threadBs [i ].start ();
23+ }
24+ }
25+ }
26+
27+
28+ /*
29+ 输出:
30+ 有可能★★连续 时间为1460688833773 ThreadName=Thread-18
31+ 有可能★★连续 时间为1460688833773 ThreadName=Thread-2
32+ 有可能★★连续 时间为1460688833773 ThreadName=Thread-10
33+ 有可能★★连续 时间为1460688833773 ThreadName=Thread-4
34+ 有可能★★连续 时间为1460688833773 ThreadName=Thread-8
35+ 有可能★★连续 时间为1460688833773 ThreadName=Thread-0
36+ 打印☆ 时间为1460688833773 ThreadName=Thread-13
37+ get unlock 时间为1460688833773 ThreadName=Thread-13
38+ 有可能☆☆连续 时间为1460688833773 ThreadName=Thread-13
39+ 有可能☆☆连续 时间为1460688833773 ThreadName=Thread-7
40+ 有可能☆☆连续 时间为1460688833773 ThreadName=Thread-9
41+ 有可能☆☆连续 时间为1460688833773 ThreadName=Thread-11
42+ 有可能☆☆连续 时间为1460688833773 ThreadName=Thread-1
43+ 有可能☆☆连续 时间为1460688833773 ThreadName=Thread-5
44+ 有可能☆☆连续 时间为1460688833773 ThreadName=Thread-15
45+ 打印★ 时间为1460688833773 ThreadName=Thread-6
46+ set unlock 时间为1460688833773 ThreadName=Thread-6
47+ 有可能★★连续 时间为1460688833773 ThreadName=Thread-6
48+ 有可能★★连续 时间为1460688833773 ThreadName=Thread-12
49+ 有可能★★连续 时间为1460688833773 ThreadName=Thread-16
50+ 有可能★★连续 时间为1460688833773 ThreadName=Thread-14
51+ 打印☆ 时间为1460688833773 ThreadName=Thread-17
52+ get unlock 时间为1460688833773 ThreadName=Thread-17
53+ 有可能☆☆连续 时间为1460688833773 ThreadName=Thread-17
54+ 有可能☆☆连续 时间为1460688833773 ThreadName=Thread-3
55+ 有可能☆☆连续 时间为1460688833773 ThreadName=Thread-19
56+ 打印★ 时间为1460688833773 ThreadName=Thread-18
57+ set unlock 时间为1460688833773 ThreadName=Thread-18
58+ 有可能★★连续 时间为1460688833773 ThreadName=Thread-18
59+ 有可能★★连续 时间为1460688833773 ThreadName=Thread-2
60+ 有可能★★连续 时间为1460688833773 ThreadName=Thread-10
61+ 有可能★★连续 时间为1460688833773 ThreadName=Thread-4
62+ 有可能★★连续 时间为1460688833773 ThreadName=Thread-8
63+ 有可能★★连续 时间为1460688833773 ThreadName=Thread-0
64+ 打印☆ 时间为1460688833773 ThreadName=Thread-13
65+ get unlock 时间为1460688833773 ThreadName=Thread-13
66+ 有可能☆☆连续 时间为1460688833773 ThreadName=Thread-13
67+ 有可能☆☆连续 时间为1460688833773 ThreadName=Thread-7
68+ 有可能☆☆连续 时间为1460688833773 ThreadName=Thread-9
69+ 有可能☆☆连续 时间为1460688833773 ThreadName=Thread-11
70+ 有可能☆☆连续 时间为1460688833773 ThreadName=Thread-1
71+ 有可能☆☆连续 时间为1460688833773 ThreadName=Thread-5
72+ 有可能☆☆连续 时间为1460688833773 ThreadName=Thread-15
73+ 打印★ 时间为1460688833773 ThreadName=Thread-6
74+ set unlock 时间为1460688833773 ThreadName=Thread-6
75+ 有可能★★连续 时间为1460688833773 ThreadName=Thread-6
76+ 有可能★★连续 时间为1460688833773 ThreadName=Thread-12
77+ 有可能★★连续 时间为1460688833773 ThreadName=Thread-16
78+ 有可能★★连续 时间为1460688833773 ThreadName=Thread-14
79+ 打印☆ 时间为1460688833773 ThreadName=Thread-17
80+ get unlock 时间为1460688833773 ThreadName=Thread-17
81+ */
0 commit comments