From f79236b43303170a100d82340adb50cffceda1a3 Mon Sep 17 00:00:00 2001 From: Loredana Crusoveanu Date: Sat, 14 Apr 2018 18:16:08 +0300 Subject: [PATCH 1/2] fix volatile test --- .../SharedObjectManualTest.java | 51 +++++++------------ 1 file changed, 18 insertions(+), 33 deletions(-) diff --git a/core-java-concurrency/src/test/java/com/baeldung/concurrent/volatilekeyword/SharedObjectManualTest.java b/core-java-concurrency/src/test/java/com/baeldung/concurrent/volatilekeyword/SharedObjectManualTest.java index 8770cb4e90..90615f23b8 100644 --- a/core-java-concurrency/src/test/java/com/baeldung/concurrent/volatilekeyword/SharedObjectManualTest.java +++ b/core-java-concurrency/src/test/java/com/baeldung/concurrent/volatilekeyword/SharedObjectManualTest.java @@ -1,55 +1,37 @@ package com.baeldung.concurrent.volatilekeyword; -import org.junit.After; -import org.junit.Before; import org.junit.Test; -import static junit.framework.Assert.assertEquals; +import static org.junit.Assert.*; public class SharedObjectManualTest { - private SharedObject sharedObject; - private int valueReadByThread2; - private int valueReadByThread3; - - @Before - public void setUp() { - sharedObject = new SharedObject(); - } - @Test public void whenOneThreadWrites_thenVolatileReadsFromMainMemory() throws InterruptedException { + SharedObject sharedObject = new SharedObject(); + Thread writer = new Thread(() -> sharedObject.increamentCount()); writer.start(); - + Thread.sleep(100); + System.out.println(sharedObject.getCount()); Thread readerOne = new Thread(() -> { - try { - Thread.sleep(1000); - } catch (InterruptedException e) { - e.printStackTrace(); - } - valueReadByThread2 = sharedObject.getCount(); + int valueReadByThread2 = sharedObject.getCount(); + assertEquals(1, valueReadByThread2); }); readerOne.start(); Thread readerTwo = new Thread(() -> { - try { - Thread.sleep(1000); - } catch (InterruptedException e) { - e.printStackTrace(); - } - valueReadByThread3 = sharedObject.getCount(); + int valueReadByThread3 = sharedObject.getCount(); + assertEquals(1, valueReadByThread3); }); readerTwo.start(); - assertEquals(1, valueReadByThread2); - assertEquals(1, valueReadByThread3); - } @Test public void whenTwoThreadWrites_thenVolatileReadsFromMainMemory() throws InterruptedException { + SharedObject sharedObject = new SharedObject(); Thread writerOne = new Thread(() -> sharedObject.increamentCount()); writerOne.start(); Thread.sleep(100); @@ -58,14 +40,17 @@ public class SharedObjectManualTest { writerTwo.start(); Thread.sleep(100); - Thread readerOne = new Thread(() -> valueReadByThread2 = sharedObject.getCount()); + Thread readerOne = new Thread(() -> { + int valueReadByThread2 = sharedObject.getCount(); + assertEquals(2, valueReadByThread2); + }); readerOne.start(); - Thread readerTwo = new Thread(() -> valueReadByThread3 = sharedObject.getCount()); + Thread readerTwo = new Thread(() -> { + int valueReadByThread3 = sharedObject.getCount(); + assertEquals(2, valueReadByThread3); + }); readerTwo.start(); - assertEquals(2, valueReadByThread2); - assertEquals(2, valueReadByThread3); - } } From a60f86ddeeeefcd4cf311cfcce8c64f8b028fa31 Mon Sep 17 00:00:00 2001 From: Loredana Crusoveanu Date: Sat, 14 Apr 2018 18:17:25 +0300 Subject: [PATCH 2/2] remove sysout --- .../concurrent/volatilekeyword/SharedObjectManualTest.java | 1 - 1 file changed, 1 deletion(-) diff --git a/core-java-concurrency/src/test/java/com/baeldung/concurrent/volatilekeyword/SharedObjectManualTest.java b/core-java-concurrency/src/test/java/com/baeldung/concurrent/volatilekeyword/SharedObjectManualTest.java index 90615f23b8..731ae887e1 100644 --- a/core-java-concurrency/src/test/java/com/baeldung/concurrent/volatilekeyword/SharedObjectManualTest.java +++ b/core-java-concurrency/src/test/java/com/baeldung/concurrent/volatilekeyword/SharedObjectManualTest.java @@ -13,7 +13,6 @@ public class SharedObjectManualTest { Thread writer = new Thread(() -> sharedObject.increamentCount()); writer.start(); Thread.sleep(100); - System.out.println(sharedObject.getCount()); Thread readerOne = new Thread(() -> { int valueReadByThread2 = sharedObject.getCount();