Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 48d25d7

Browse filesBrowse files
committed
添加原子类
1 parent c94ffac commit 48d25d7
Copy full SHA for 48d25d7

File tree

Expand file treeCollapse file tree

3 files changed

+117
-0
lines changed
Open diff view settings
Filter options
Expand file treeCollapse file tree

3 files changed

+117
-0
lines changed
Open diff view settings
Collapse file
+36Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package cn.byhieg.threadtutorial.concurrent.atom;
2+
3+
import java.util.concurrent.atomic.AtomicInteger;
4+
import java.util.concurrent.atomic.AtomicIntegerArray;
5+
import java.util.concurrent.atomic.AtomicLong;
6+
import java.util.concurrent.atomic.AtomicReference;
7+
8+
/**
9+
* Created by shiqifeng on 2017/5/5.
10+
* Mail byhieg@gmail.com
11+
*/
12+
public class AtomFactory {
13+
14+
private static final AtomFactory atomFactory = new AtomFactory();
15+
16+
private AtomFactory(){
17+
18+
}
19+
20+
public static AtomFactory getInstance(){
21+
return atomFactory;
22+
}
23+
24+
public AtomicInteger createAtomInt(int a){
25+
return new AtomicInteger(a);
26+
}
27+
28+
public AtomicIntegerArray createAtomArray(int[] a) {
29+
return new AtomicIntegerArray(a);
30+
}
31+
32+
public AtomicReference<MyObject> createAtomReference(MyObject object){
33+
AtomicReference<MyObject> objectAtomicReference = new AtomicReference<>();
34+
return objectAtomicReference;
35+
}
36+
}
Collapse file
+12Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package cn.byhieg.threadtutorial.concurrent.atom;
2+
3+
/**
4+
* Created by shiqifeng on 2017/5/5.
5+
* Mail byhieg@gmail.com
6+
*/
7+
public class MyObject {
8+
9+
public String name = "byhieg";
10+
public int age = 24;
11+
public volatile int id = 1;
12+
}
Collapse file
+69Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
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

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.