File tree Expand file tree Collapse file tree 6 files changed +113
-5
lines changed
javaConcurrency/src/com/concurrency Expand file tree Collapse file tree 6 files changed +113
-5
lines changed Original file line number Diff line number Diff line change 1+ package com .concurrency .ConcurrentHashMap ;
2+
3+ import java .util .concurrent .ConcurrentHashMap ;
4+
5+ public class ConcurrentHashMapTest {
6+ private ConcurrentHashMap maps = new ConcurrentHashMap ();
7+ }
Original file line number Diff line number Diff line change 1+ package com .concurrency .ReentrantReadWriteLock ;
2+
3+ import java .util .concurrent .locks .ReadWriteLock ;
4+ import java .util .concurrent .locks .ReentrantReadWriteLock ;
5+
6+ public class PricesInfo {
7+ private double price1 ;
8+ private double price2 ;
9+
10+ private ReadWriteLock lock ;
11+
12+ public PricesInfo (){
13+ price1 = 1.0 ;
14+ price2 = 2.0 ;
15+
16+ lock = new ReentrantReadWriteLock ();
17+ }
18+
19+ public double getPrice1 (){
20+ lock .readLock ().lock ();
21+ double value = price1 ;
22+ lock .readLock ().unlock ();
23+ return value ;
24+ }
25+
26+ public double getPrice2 (){
27+ lock .readLock ().lock ();
28+ double value = price2 ;
29+ lock .readLock ().unlock ();
30+ return value ;
31+ }
32+
33+ public void setPrices (double price1 , double price2 ){
34+ lock .writeLock ().lock ();
35+ this .price1 = price1 ;
36+ this .price2 = price2 ;
37+ lock .writeLock ().unlock ();
38+ }
39+ }
Original file line number Diff line number Diff line change 1+ package com .concurrency .ReentrantReadWriteLock ;
2+
3+ public class Reader implements Runnable {
4+
5+ private PricesInfo pricesInfo ;
6+
7+ public Reader (PricesInfo pricesInfo ){
8+ this .pricesInfo = pricesInfo ;
9+ }
10+
11+ @ Override
12+ public void run () {
13+ for (int i = 0 ; i < 10 ; i ++) {
14+ System .out .println (Thread .currentThread ().getName () + "--Price 1:" + pricesInfo .getPrice1 ());
15+ System .out .println (Thread .currentThread ().getName () + "--Price 1:" + pricesInfo .getPrice2 ());
16+ }
17+ }
18+
19+ }
Load Diff This file was deleted.
Original file line number Diff line number Diff line change 1+ package com .concurrency .ReentrantReadWriteLock ;
2+
3+ public class Test {
4+ public static void main (String [] args ) {
5+ PricesInfo pricesInfo = new PricesInfo ();
6+
7+ Reader [] readers = new Reader [5 ];
8+ Thread [] readerThread = new Thread [5 ];
9+ for (int i =0 ; i <5 ; i ++){
10+ readers [i ]=new Reader (pricesInfo );
11+ readerThread [i ]=new Thread (readers [i ]);
12+ }
13+
14+ Writer writer =new Writer (pricesInfo );
15+ Thread threadWriter =new Thread (writer );
16+
17+ for (int i =0 ; i <5 ; i ++){
18+ readerThread [i ].start ();
19+ }
20+ threadWriter .start ();
21+ }
22+ }
Original file line number Diff line number Diff line change 1+ package com .concurrency .ReentrantReadWriteLock ;
2+
3+ public class Writer implements Runnable {
4+ private PricesInfo pricesInfo ;
5+
6+ public Writer (PricesInfo pricesInfo ){
7+ this .pricesInfo = pricesInfo ;
8+ }
9+
10+ @ Override
11+ public void run () {
12+ for (int i =0 ; i <3 ; i ++) {
13+ System .out .printf ("Writer: Attempt to modify the prices.\n " );
14+ pricesInfo .setPrices (Math .random ()*10 , Math .random ()*8 );
15+ System .out .printf ("Writer: Prices have been modified.\n " );
16+ try {
17+ Thread .sleep (2 );
18+ } catch (InterruptedException e ) {
19+ e .printStackTrace ();
20+ }
21+ }
22+
23+ }
24+
25+
26+ }
You can’t perform that action at this time.
0 commit comments