File tree Expand file tree Collapse file tree
java-se-base-parent/model-multy-thread/src/main/java/com/multy/thread/block05lock01 Expand file tree Collapse file tree 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