Skip to content

Commit e3f0069

Browse files
committed
[rxJava 스터디 - 2장] 2장 예제 추가
1 parent 2132d74 commit e3f0069

File tree

7 files changed

+129
-0
lines changed

7 files changed

+129
-0
lines changed
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package ezhoon.chapter02
2+
3+
import java.util.concurrent.atomic.AtomicInteger
4+
5+
class AtomicConsumer {
6+
7+
@Volatile
8+
var count = AtomicInteger(0)
9+
private set
10+
11+
fun increment() {
12+
count.incrementAndGet()
13+
}
14+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package ezhoon.chapter02
2+
3+
import java.util.concurrent.Executors
4+
5+
fun main() {
6+
7+
val counter = AtomicConsumer()
8+
9+
val task = Runnable {
10+
for (i in 0..9999) {
11+
counter.increment()
12+
}
13+
}
14+
15+
val executorService = Executors.newCachedThreadPool()
16+
17+
val future1 = executorService.submit(task, true)
18+
val future2 = executorService.submit(task, true)
19+
20+
if (future1.get() && future2.get()) {
21+
println("${counter.count}")
22+
} else {
23+
println("실패")
24+
}
25+
26+
executorService.shutdown()
27+
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package ezhoon.chapter02
2+
3+
import java.util.concurrent.Executors
4+
5+
fun main() {
6+
7+
val point = Point()
8+
9+
val task = Runnable {
10+
for (i in 0..9999) {
11+
point.rightUp()
12+
}
13+
}
14+
15+
val executorService = Executors.newCachedThreadPool()
16+
17+
val future1 = executorService.submit(task, true)
18+
val future2 = executorService.submit(task, true)
19+
val future3 = executorService.submit(task, true)
20+
val future4 = executorService.submit(task, true)
21+
val future5 = executorService.submit(task, true)
22+
val future6 = executorService.submit(task, true)
23+
24+
if (future1.get() && future2.get() && future3.get() && future4.get() && future5.get() && future6.get()) {
25+
println("${point.getX()},${point.getY()}")
26+
} else {
27+
println("실패")
28+
}
29+
30+
executorService.shutdown()
31+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package ezhoon.chapter02
2+
3+
import java.util.concurrent.atomic.AtomicInteger
4+
5+
class Point {
6+
7+
private val x = AtomicInteger(0)
8+
private val y = AtomicInteger(0)
9+
10+
fun rightUp() {
11+
x.incrementAndGet()
12+
y.incrementAndGet()
13+
}
14+
15+
fun getX() = x.get()
16+
17+
fun getY() = y.get()
18+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package ezhoon.chapter02
2+
3+
class Consumer {
4+
5+
@Volatile
6+
var count: Int = 0
7+
private set
8+
9+
fun increment() {
10+
count++
11+
}
12+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package ezhoon.chapter02
2+
3+
import java.util.concurrent.Executors
4+
5+
fun main() {
6+
7+
val counter = Consumer()
8+
9+
val task = Runnable {
10+
for (i in 0..9999) {
11+
counter.increment()
12+
}
13+
}
14+
15+
val executorService = Executors.newCachedThreadPool()
16+
17+
val future1 = executorService.submit(task, true)
18+
val future2 = executorService.submit(task, true)
19+
20+
if (future1.get() && future2.get()) {
21+
println("${counter.count}")
22+
} else {
23+
println("실패")
24+
}
25+
26+
executorService.shutdown()
27+
}

src/main/kotlin/ezhoon/chapter02/README.md

Whitespace-only changes.

0 commit comments

Comments
 (0)