ロックロックの使用例
3851 ワード
ロックロックはjava 5がsynchronizedの代わりに使用するオブジェクト向けロックのスキームです
<完>
1 public class LockDemo {
2 /**
3 * Lock synchronized, Lock 。eclipse CTRL+T
4 */
5
6 public static void main(String[] args) {
7 final OuterLoop loop = new OuterLoop();
8
9 for (int i = 0; i < 100; i++) {
10 new Thread(new Runnable() {
11 @Override
12 public void run() {
13 loop.outputlock("liqiushui");
14 }
15 }).start();
16
17 new Thread(new Runnable() {
18 @Override
19 public void run() {
20 loop.outputlock("wangchongyang");
21 }
22 }).start();
23 }
24 }
25
26 }
27
28 class OuterLoop {
29 // synchronized
30 public synchronized void output(String name) {
31 for (int i = 0; i < name.length(); i++) {
32 System.out.print(name.charAt(i));
33 }
34 System.out.println();
35 }
36
37
38 private Lock lock = new ReentrantLock();
39 // lock
40 public void outputlock(String name) {
41 // , 。 , , 。
42 // Lock lock = new ReentrantLock();
43
44 // lock
45 lock.lock();
46 try {
47 for (int i = 0; i < name.length(); i++) {
48 System.out.print(name.charAt(i));
49 }
50 System.out.println();
51 } finally {
52 // finally return,
53 lock.unlock();
54 }
55 }
56
57 }
<完>