File tree Expand file tree Collapse file tree 2 files changed +87
-0
lines changed
java-se-base-parent/model-multy-thread/src/main/java/com/multy/thread/block05lock01 Expand file tree Collapse file tree 2 files changed +87
-0
lines changed Original file line number Diff line number Diff line change
1
+ package com .multy .thread .block05lock01 ;
2
+
3
+ public class LockThread01 {
4
+ public static void main (String [] args ) {
5
+ CountAdd countAdd = new CountAdd () ;
6
+ AddThread01 addThread01 = new AddThread01 (countAdd ) ;
7
+ addThread01 .start ();
8
+ AddThread02 varThread02 = new AddThread02 (countAdd ) ;
9
+ varThread02 .start ();
10
+ }
11
+ }
12
+ class AddThread01 extends Thread {
13
+ private CountAdd countAdd ;
14
+ public AddThread01 (CountAdd countAdd ){
15
+ this .countAdd = countAdd ;
16
+ }
17
+ @ Override
18
+ public void run () {
19
+ countAdd .countAdd (30 );
20
+ }
21
+ }
22
+ class AddThread02 extends Thread {
23
+ private CountAdd countAdd ;
24
+ public AddThread02 (CountAdd countAdd ){
25
+ this .countAdd = countAdd ;
26
+ }
27
+ @ Override
28
+ public void run () {
29
+ countAdd .countAdd (10 );
30
+ }
31
+ }
32
+ class CountAdd {
33
+ private Integer count = 0 ;
34
+ public void countAdd (Integer num ){
35
+ try {
36
+ if (num == 30 ){
37
+ count = count + 50 ;
38
+ Thread .sleep (3000 );
39
+ } else {
40
+ count = count + num ;
41
+ }
42
+ System .out .println ("num=" +num +";count=" +count );
43
+ } catch (Exception e ){
44
+ e .printStackTrace ();
45
+ }
46
+ }
47
+ }
Original file line number Diff line number Diff line change
1
+ package com .multy .thread .block05lock01 ;
2
+
3
+ import java .util .concurrent .locks .Lock ;
4
+ import java .util .concurrent .locks .ReentrantLock ;
5
+
6
+ public class LockThread02 {
7
+ public static void main (String [] args ) {
8
+ LockNum lockNum = new LockNum () ;
9
+ LockThread lockThread1 = new LockThread (lockNum ,"TH1" );
10
+ LockThread lockThread2 = new LockThread (lockNum ,"TH2" );
11
+ LockThread lockThread3 = new LockThread (lockNum ,"TH3" );
12
+ lockThread1 .start ();
13
+ lockThread2 .start ();
14
+ lockThread3 .start ();
15
+ }
16
+ }
17
+ class LockNum {
18
+ private Lock lock = new ReentrantLock () ;
19
+ public void getNum (){
20
+ lock .lock ();
21
+ try {
22
+ for (int i = 0 ; i < 3 ; i ++){
23
+ System .out .println ("ThreadName:" +Thread .currentThread ().getName ()+";i=" +i );
24
+ }
25
+ } finally {
26
+ lock .unlock ();
27
+ }
28
+ }
29
+ }
30
+ class LockThread extends Thread {
31
+ private LockNum lockNum ;
32
+ public LockThread (LockNum lockNum ,String name ){
33
+ this .lockNum = lockNum ;
34
+ super .setName (name );
35
+ }
36
+ @ Override
37
+ public void run () {
38
+ lockNum .getNum ();
39
+ }
40
+ }
You can’t perform that action at this time.
0 commit comments