1+ package cn .byhieg .threadtutorialtest .concurrenttest .atomtest ;
2+
3+ import cn .byhieg .threadtutorial .concurrent .atom .AtomFactory ;
4+
5+ import cn .byhieg .threadtutorial .concurrent .atom .MyObject ;
6+ import junit .framework .TestCase ;
7+
8+ import java .util .concurrent .atomic .AtomicInteger ;
9+ import java .util .concurrent .atomic .AtomicIntegerArray ;
10+ import java .util .concurrent .atomic .AtomicReference ;
11+
12+ /**
13+ * Created by shiqifeng on 2017/5/5.
14+ * Mail byhieg@gmail.com
15+ */
16+ public class AtomFactoryTest extends TestCase {
17+ AtomicInteger integer ;
18+ AtomicIntegerArray array ;
19+ AtomicReference <MyObject > reference ;
20+
21+ public void setUp () throws Exception {
22+ super .setUp ();
23+ integer = AtomFactory .getInstance ().createAtomInt (1 );
24+ }
25+
26+ public void testAtomInt () throws Exception {
27+ new Thread (()->{
28+ for (int i = 0 ; i < 10 ; i ++) {
29+ integer .getAndIncrement ();
30+ System .out .println (getName () + " " + integer .get ());
31+ }
32+ }).start ();
33+
34+ new Thread (()->{
35+ for (int i = 0 ; i < 10 ; i ++) {
36+ integer .getAndIncrement ();
37+ System .out .println (getName () + " " + integer .get ());
38+ }
39+ }).start ();
40+
41+ Thread .sleep (1000 );
42+ }
43+
44+ public void testAtomArray () throws Exception {
45+ int [] value = new int []{1 ,2 ,3 ,4 };
46+ array = AtomFactory .getInstance ().createAtomArray (value );
47+ array .getAndSet (1 ,10 );
48+ System .out .println (array .get (1 ));
49+ System .out .println (value [1 ]);
50+ }
51+
52+ public void testAtomRef ()throws Exception {
53+ MyObject object = new MyObject ();
54+ reference = AtomFactory .getInstance ().createAtomReference (object );
55+ reference .set (object );
56+ MyObject newObject = new MyObject ();
57+ newObject .name = "xiaoli" ;
58+ reference .compareAndSet (object , newObject );
59+ System .out .println (reference .get ().name );
60+
61+ }
62+
63+
64+ public void tearDown () throws Exception {
65+
66+ }
67+
68+
69+ }
0 commit comments