From 047c558fa2c5301e00da7fab16e209d589b1cd50 Mon Sep 17 00:00:00 2001 From: alivi Date: Wed, 4 Dec 2019 14:55:53 +0100 Subject: [PATCH 1/3] added MyThread class and synchronized Methods --- HW_Multithreading/src/Counter.java | 6 +++--- HW_Multithreading/src/Main.java | 21 +++++++++++++++++++++ HW_Multithreading/src/MyThread.java | 22 ++++++++++++++++++++++ 3 files changed, 46 insertions(+), 3 deletions(-) create mode 100644 HW_Multithreading/src/MyThread.java diff --git a/HW_Multithreading/src/Counter.java b/HW_Multithreading/src/Counter.java index c310ca7..ce37736 100644 --- a/HW_Multithreading/src/Counter.java +++ b/HW_Multithreading/src/Counter.java @@ -5,15 +5,15 @@ public Counter(int count) { this.count = count; } - public void increment(){ + public synchronized void increment(){ count ++; } - public void decrement(){ + public synchronized void decrement(){ count --; } - public int getCountValue(){ + public synchronized int getCountValue(){ return count; } } diff --git a/HW_Multithreading/src/Main.java b/HW_Multithreading/src/Main.java index 7046417..e5314c1 100644 --- a/HW_Multithreading/src/Main.java +++ b/HW_Multithreading/src/Main.java @@ -1,2 +1,23 @@ public class Main { + public static void main(String[] args) throws InterruptedException { + + Counter count=new Counter(10); + + Runnable myThread1=new MyThread(count); + Runnable myThread2=new MyThread(count); + + Thread t1=new Thread(myThread1); + Thread t2=new Thread(myThread2); + + t1.start(); + t1.join(); + t2.start(); + t2.join(); + + /*new MyThread(count); + new MyThread(count);*/ + + + System.out.println(count.getCountValue()+ " value from Main"); + } } diff --git a/HW_Multithreading/src/MyThread.java b/HW_Multithreading/src/MyThread.java new file mode 100644 index 0000000..89a1b76 --- /dev/null +++ b/HW_Multithreading/src/MyThread.java @@ -0,0 +1,22 @@ +public class MyThread implements Runnable { + private Counter count; + // Thread t; + + public MyThread(Counter count) { + this.count = count; + /* t=new Thread(); + t.start();*/ + } + + + @Override + public void run() { + for (int i = 0; i <10 ; i++) { + count.increment(); + System.out.println(count.getCountValue()+ " value from increment"); + count.decrement(); + System.out.println(count.getCountValue()+ " value from decrement"); + } + + } +} From bd838cf8c032d51c760e61e1e60055463ad3e791 Mon Sep 17 00:00:00 2001 From: alivi Date: Thu, 5 Dec 2019 12:39:32 +0100 Subject: [PATCH 2/3] changed method in Mythread class --- HW_Multithreading/src/Counter.java | 4 ++-- HW_Multithreading/src/Main.java | 4 ++-- HW_Multithreading/src/MyThread.java | 14 ++++++++++---- 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/HW_Multithreading/src/Counter.java b/HW_Multithreading/src/Counter.java index ce37736..a87fd07 100644 --- a/HW_Multithreading/src/Counter.java +++ b/HW_Multithreading/src/Counter.java @@ -9,11 +9,11 @@ public synchronized void increment(){ count ++; } - public synchronized void decrement(){ + public synchronized void decrement(){ count --; } - public synchronized int getCountValue(){ + public int getCountValue(){ return count; } } diff --git a/HW_Multithreading/src/Main.java b/HW_Multithreading/src/Main.java index e5314c1..a4e7d25 100644 --- a/HW_Multithreading/src/Main.java +++ b/HW_Multithreading/src/Main.java @@ -1,7 +1,7 @@ public class Main { public static void main(String[] args) throws InterruptedException { - Counter count=new Counter(10); + Counter count=new Counter(0); Runnable myThread1=new MyThread(count); Runnable myThread2=new MyThread(count); @@ -10,8 +10,8 @@ public static void main(String[] args) throws InterruptedException { Thread t2=new Thread(myThread2); t1.start(); - t1.join(); t2.start(); + t1.join(); t2.join(); /*new MyThread(count); diff --git a/HW_Multithreading/src/MyThread.java b/HW_Multithreading/src/MyThread.java index 89a1b76..7388230 100644 --- a/HW_Multithreading/src/MyThread.java +++ b/HW_Multithreading/src/MyThread.java @@ -12,10 +12,16 @@ public MyThread(Counter count) { @Override public void run() { for (int i = 0; i <10 ; i++) { - count.increment(); - System.out.println(count.getCountValue()+ " value from increment"); - count.decrement(); - System.out.println(count.getCountValue()+ " value from decrement"); + if (count.getCountValue() == 0) { + count.increment(); + + System.out.println(count.getCountValue()+ " value from decrement"); + } else { + count.decrement(); + System.out.println(count.getCountValue()+ " value from increment"); + } + + } } From 532906059ca577a9818c6cef707b6812b7b8b4be Mon Sep 17 00:00:00 2001 From: alivi Date: Thu, 5 Dec 2019 15:06:32 +0100 Subject: [PATCH 3/3] added loop for two threads in main class --- HW_Multithreading/src/Main.java | 26 +++++++++++++++++++------- HW_Multithreading/src/MyThread.java | 8 ++++---- 2 files changed, 23 insertions(+), 11 deletions(-) diff --git a/HW_Multithreading/src/Main.java b/HW_Multithreading/src/Main.java index a4e7d25..41abda6 100644 --- a/HW_Multithreading/src/Main.java +++ b/HW_Multithreading/src/Main.java @@ -3,20 +3,32 @@ public static void main(String[] args) throws InterruptedException { Counter count=new Counter(0); - Runnable myThread1=new MyThread(count); - Runnable myThread2=new MyThread(count); - Thread t1=new Thread(myThread1); - Thread t2=new Thread(myThread2); + Runnable myThread1 = ()->{ + for (int i = 0; i <10 ; i++) { + count.increment(); + System.out.println(count.getCountValue()+ " value from increment"); + } + + }; + myThread1.run(); + Thread t1=new Thread(myThread1); t1.start(); + + Runnable myThread2=()->{ + for (int i = 0; i <10 ; i++){ + count.decrement(); + System.out.println(count.getCountValue()+ " value from decrement"); + } + }; + myThread2.run(); + Thread t2=new Thread(myThread2); t2.start(); + t1.join(); t2.join(); - /*new MyThread(count); - new MyThread(count);*/ - System.out.println(count.getCountValue()+ " value from Main"); } diff --git a/HW_Multithreading/src/MyThread.java b/HW_Multithreading/src/MyThread.java index 7388230..7ee4867 100644 --- a/HW_Multithreading/src/MyThread.java +++ b/HW_Multithreading/src/MyThread.java @@ -11,18 +11,18 @@ public MyThread(Counter count) { @Override public void run() { - for (int i = 0; i <10 ; i++) { + /*for (int i = 0; i <10 ; i++) { if (count.getCountValue() == 0) { count.increment(); + System.out.println(count.getCountValue()+ " value from increment"); - System.out.println(count.getCountValue()+ " value from decrement"); } else { count.decrement(); - System.out.println(count.getCountValue()+ " value from increment"); + System.out.println(count.getCountValue()+ " value from decrement"); } - } + }*/ } }