File tree Expand file tree Collapse file tree 5 files changed +66
-0
lines changed
bin/com/duwei/multythread
src/com/duwei/multythread Expand file tree Collapse file tree 5 files changed +66
-0
lines changed Original file line number Diff line number Diff line change
1
+ package com .duwei .multythread ;
2
+
3
+ import java .util .concurrent .locks .ReentrantLock ;
4
+ /**
5
+ * 有两个线程都对i进行++操作,为了保证线程安全,
6
+ * 使用了 ReentrantLock,从用法上可以看出,
7
+ * 与 synchronized相比, ReentrantLock就稍微复杂一点。
8
+ * 因为必须在finally中进行解锁操作,如果不在 finally解锁,
9
+ * 有可能代码出现异常锁没被释放,而synchronized是由JVM来释放锁。
10
+ * @author 杜伟
11
+ *
12
+ */
13
+ public class ReentrantLockDemo implements Runnable {
14
+ public static ReentrantLock lock = new ReentrantLock ();
15
+ public static int i = 0 ;
16
+ @ Override
17
+ public void run (){
18
+ for (int j = 0 ; j < 10000000 ; j ++){
19
+ lock .lock ();
20
+ try {
21
+ i ++;
22
+ }
23
+ finally {
24
+ lock .unlock ();
25
+ }
26
+ }
27
+ }
28
+
29
+ public static void main (String [] args ) throws InterruptedException {
30
+ ReentrantLockDemo test = new ReentrantLockDemo ();
31
+ Thread t1 = new Thread (test );
32
+ Thread t2 = new Thread (test );
33
+ t1 .start ();
34
+ t2 .start ();
35
+ t1 .join ();
36
+ t2 .join ();
37
+ System .out .println (i );
38
+ }
39
+
40
+ }
Original file line number Diff line number Diff line change
1
+ package com .duwei .multythread ;
2
+ /**
3
+ * µ÷ÓÃThread.start&&Thread.runµÄÇø±ð£¡£¡£¡
4
+ * @author ¶Åΰ
5
+ */
6
+ public class ThreadDemo {
7
+
8
+ public static void main (String [] args ) {
9
+ // Thread thread = new Thread("t1"){
10
+ // @Override
11
+ // public void run(){
12
+ // System.out.println(Thread.currentThread().getName());
13
+ // }
14
+ // };
15
+ // thread.start();
16
+ //----------------------------------------
17
+ Thread thread = new Thread ("t1" ){
18
+ @ Override
19
+ public void run (){
20
+ System .out .println (Thread .currentThread ().getName ());
21
+ }
22
+ };
23
+ thread .run ();
24
+ }
25
+
26
+ }
You can’t perform that action at this time.
0 commit comments