From a5320f4fbcba320307aecaa9639e4cf730510cd0 Mon Sep 17 00:00:00 2001 From: haerong22 Date: Mon, 5 Sep 2022 03:02:14 +0900 Subject: [PATCH] #19 was : thread safe --- .../java/org/example/counter/Counter.java | 28 +++++++++++++++++++ .../example/counter/RaceConditionDemo.java | 15 ++++++++++ 2 files changed, 43 insertions(+) create mode 100644 my-framework/was-practice/src/main/java/org/example/counter/Counter.java create mode 100644 my-framework/was-practice/src/main/java/org/example/counter/RaceConditionDemo.java diff --git a/my-framework/was-practice/src/main/java/org/example/counter/Counter.java b/my-framework/was-practice/src/main/java/org/example/counter/Counter.java new file mode 100644 index 00000000..a52887d4 --- /dev/null +++ b/my-framework/was-practice/src/main/java/org/example/counter/Counter.java @@ -0,0 +1,28 @@ +package org.example.counter; + +public class Counter implements Runnable { + private int count = 0; + + public void increment() { + count++; + } + + public void decrement() { + count--; + } + + public int getValue() { + return count; + } + + @Override + public void run() { + synchronized (this) { + this.increment(); + System.out.println("Value for Thread After increment " + Thread.currentThread().getName() + " " + this.getValue()); + + this.decrement(); + System.out.println("Value for Thread at Last " + Thread.currentThread().getName() + " " + this.getValue()); + } + } +} diff --git a/my-framework/was-practice/src/main/java/org/example/counter/RaceConditionDemo.java b/my-framework/was-practice/src/main/java/org/example/counter/RaceConditionDemo.java new file mode 100644 index 00000000..e6940019 --- /dev/null +++ b/my-framework/was-practice/src/main/java/org/example/counter/RaceConditionDemo.java @@ -0,0 +1,15 @@ +package org.example.counter; + +public class RaceConditionDemo { + + public static void main(String[] args) { + Counter counter = new Counter(); + Thread t1 = new Thread(counter, "Thread-1"); + Thread t2 = new Thread(counter, "Thread-2"); + Thread t3 = new Thread(counter, "Thread-3"); + + t1.start(); + t2.start(); + t3.start(); + } +}