diff --git a/.gitignore b/.gitignore
index 1890e8bd0e..a8f09b4135 100644
--- a/.gitignore
+++ b/.gitignore
@@ -41,3 +41,4 @@ SpringDataInjectionDemo/.mvn/wrapper/maven-wrapper.properties
spring-call-getters-using-reflection/.mvn/wrapper/maven-wrapper.properties
spring-check-if-a-property-is-null/.mvn/wrapper/maven-wrapper.properties
+/vertx-and-rxjava/.vertx/
diff --git a/algorithms/src/main/java/com/baeldung/algorithms/BinarySearch.java b/algorithms/src/main/java/com/baeldung/algorithms/binarysearch/BinarySearch.java
similarity index 93%
rename from algorithms/src/main/java/com/baeldung/algorithms/BinarySearch.java
rename to algorithms/src/main/java/com/baeldung/algorithms/binarysearch/BinarySearch.java
index 86522950ef..5b2ac49d4e 100644
--- a/algorithms/src/main/java/com/baeldung/algorithms/BinarySearch.java
+++ b/algorithms/src/main/java/com/baeldung/algorithms/binarysearch/BinarySearch.java
@@ -1,3 +1,5 @@
+package com.baeldung.algorithms.binarysearch;
+
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
diff --git a/algorithms/src/main/java/com/baeldung/algorithms/string/search/StringSearchAlgorithms.java b/algorithms/src/main/java/com/baeldung/algorithms/string/search/StringSearchAlgorithms.java
new file mode 100755
index 0000000000..45ac53e039
--- /dev/null
+++ b/algorithms/src/main/java/com/baeldung/algorithms/string/search/StringSearchAlgorithms.java
@@ -0,0 +1,194 @@
+package com.baeldung.algorithms.string.search;
+
+import java.math.BigInteger;
+import java.util.Random;
+
+public class StringSearchAlgorithms {
+ public static long getBiggerPrime(int m) {
+ BigInteger prime = BigInteger.probablePrime(getNumberOfBits(m) + 1, new Random());
+ return prime.longValue();
+ }
+
+ public static long getLowerPrime(long number) {
+ BigInteger prime = BigInteger.probablePrime(getNumberOfBits(number) - 1, new Random());
+ return prime.longValue();
+ }
+
+ private static int getNumberOfBits(final int number) {
+ return Integer.SIZE - Integer.numberOfLeadingZeros(number);
+ }
+
+ private static int getNumberOfBits(final long number) {
+ return Long.SIZE - Long.numberOfLeadingZeros(number);
+ }
+
+ public static int simpleTextSearch(char[] pattern, char[] text) {
+ int patternSize = pattern.length;
+ int textSize = text.length;
+
+ int i = 0;
+
+ while ((i + patternSize) <= textSize) {
+ int j = 0;
+ while (text[i + j] == pattern[j]) {
+ j += 1;
+ if (j >= patternSize)
+ return i;
+ }
+ i += 1;
+ }
+
+ return -1;
+ }
+
+ public static int RabinKarpMethod(char[] pattern, char[] text) {
+ int patternSize = pattern.length; // m
+ int textSize = text.length; // n
+
+ long prime = getBiggerPrime(patternSize);
+
+ long r = 1;
+ for (int i = 0; i < patternSize - 1; i++) {
+ r *= 2;
+ r = r % prime;
+ }
+
+ long[] t = new long[textSize];
+ t[0] = 0;
+
+ long pfinger = 0;
+
+ for (int j = 0; j < patternSize; j++) {
+ t[0] = (2 * t[0] + text[j]) % prime;
+ pfinger = (2 * pfinger + pattern[j]) % prime;
+ }
+
+ int i = 0;
+ boolean passed = false;
+
+ int diff = textSize - patternSize;
+ for (i = 0; i <= diff; i++) {
+ if (t[i] == pfinger) {
+ passed = true;
+ for (int k = 0; k < patternSize; k++) {
+ if (text[i + k] != pattern[k]) {
+ passed = false;
+ break;
+ }
+ }
+
+ if (passed) {
+ return i;
+ }
+ }
+
+ if (i < diff) {
+ long value = 2 * (t[i] - r * text[i]) + text[i + patternSize];
+ t[i + 1] = ((value % prime) + prime) % prime;
+ }
+ }
+ return -1;
+
+ }
+
+ public static int KnuthMorrisPrattSearch(char[] pattern, char[] text) {
+ int patternSize = pattern.length; // m
+ int textSize = text.length; // n
+
+ int i = 0, j = 0;
+
+ int[] shift = KnuthMorrisPrattShift(pattern);
+
+ while ((i + patternSize) <= textSize) {
+ while (text[i + j] == pattern[j]) {
+ j += 1;
+ if (j >= patternSize)
+ return i;
+ }
+
+ if (j > 0) {
+ i += shift[j - 1];
+ j = Math.max(j - shift[j - 1], 0);
+ } else {
+ i++;
+ j = 0;
+ }
+ }
+ return -1;
+ }
+
+ public static int[] KnuthMorrisPrattShift(char[] pattern) {
+ int patternSize = pattern.length;
+
+ int[] shift = new int[patternSize];
+ shift[0] = 1;
+
+ int i = 1, j = 0;
+
+ while ((i + j) < patternSize) {
+ if (pattern[i + j] == pattern[j]) {
+ shift[i + j] = i;
+ j++;
+ } else {
+ if (j == 0)
+ shift[i] = i + 1;
+
+ if (j > 0) {
+ i = i + shift[j - 1];
+ j = Math.max(j - shift[j - 1], 0);
+ } else {
+ i = i + 1;
+ j = 0;
+ }
+ }
+ }
+ return shift;
+ }
+
+ public static int BoyerMooreHorspoolSimpleSearch(char[] pattern, char[] text) {
+ int patternSize = pattern.length;
+ int textSize = text.length;
+
+ int i = 0, j = 0;
+
+ while ((i + patternSize) <= textSize) {
+ j = patternSize - 1;
+ while (text[i + j] == pattern[j]) {
+ j--;
+ if (j < 0)
+ return i;
+ }
+ i++;
+ }
+ return -1;
+ }
+
+ public static int BoyerMooreHorspoolSearch(char[] pattern, char[] text) {
+
+ int shift[] = new int[256];
+
+ for (int k = 0; k < 256; k++) {
+ shift[k] = pattern.length;
+ }
+
+ for (int k = 0; k < pattern.length - 1; k++) {
+ shift[pattern[k]] = pattern.length - 1 - k;
+ }
+
+ int i = 0, j = 0;
+
+ while ((i + pattern.length) <= text.length) {
+ j = pattern.length - 1;
+
+ while (text[i + j] == pattern[j]) {
+ j -= 1;
+ if (j < 0)
+ return i;
+ }
+
+ i = i + shift[text[i + pattern.length - 1]];
+
+ }
+ return -1;
+ }
+}
diff --git a/algorithms/src/test/java/algorithms/StringSearchAlgorithmsTest.java b/algorithms/src/test/java/algorithms/StringSearchAlgorithmsTest.java
new file mode 100755
index 0000000000..e260cd7e5b
--- /dev/null
+++ b/algorithms/src/test/java/algorithms/StringSearchAlgorithmsTest.java
@@ -0,0 +1,25 @@
+package algorithms;
+
+
+import org.junit.Assert;
+import org.junit.Test;
+
+import com.baeldung.algorithms.string.search.StringSearchAlgorithms;
+
+public class StringSearchAlgorithmsTest {
+
+
+ @Test
+ public void testStringSearchAlgorithms(){
+ String text = "This is some nice text.";
+ String pattern = "some";
+
+ int realPosition = text.indexOf(pattern);
+ Assert.assertTrue(realPosition == StringSearchAlgorithms.simpleTextSearch(pattern.toCharArray(), text.toCharArray()));
+ Assert.assertTrue(realPosition == StringSearchAlgorithms.RabinKarpMethod(pattern.toCharArray(), text.toCharArray()));
+ Assert.assertTrue(realPosition == StringSearchAlgorithms.KnuthMorrisPrattSearch(pattern.toCharArray(), text.toCharArray()));
+ Assert.assertTrue(realPosition == StringSearchAlgorithms.BoyerMooreHorspoolSimpleSearch(pattern.toCharArray(), text.toCharArray()));
+ Assert.assertTrue(realPosition == StringSearchAlgorithms.BoyerMooreHorspoolSearch(pattern.toCharArray(), text.toCharArray()));
+ }
+
+}
diff --git a/algorithms/src/test/java/algorithms/BinarySearchTest.java b/algorithms/src/test/java/algorithms/binarysearch/BinarySearchTest.java
similarity index 92%
rename from algorithms/src/test/java/algorithms/BinarySearchTest.java
rename to algorithms/src/test/java/algorithms/binarysearch/BinarySearchTest.java
index 3611ec8e49..959f47a275 100644
--- a/algorithms/src/test/java/algorithms/BinarySearchTest.java
+++ b/algorithms/src/test/java/algorithms/binarysearch/BinarySearchTest.java
@@ -1,9 +1,11 @@
+package algorithms.binarysearch;
+
import java.util.Arrays;
import java.util.List;
import org.junit.Assert;
import org.junit.Test;
-
+import com.baeldung.algorithms.binarysearch.BinarySearch;
public class BinarySearchTest {
diff --git a/core-java-8/.gitignore b/core-java-8/.gitignore
new file mode 100644
index 0000000000..3de4cc647e
--- /dev/null
+++ b/core-java-8/.gitignore
@@ -0,0 +1,26 @@
+*.class
+
+0.*
+
+#folders#
+/target
+/neoDb*
+/data
+/src/main/webapp/WEB-INF/classes
+*/META-INF/*
+.resourceCache
+
+# Packaged files #
+*.jar
+*.war
+*.ear
+
+# Files generated by integration tests
+*.txt
+backup-pom.xml
+/bin/
+/temp
+
+#IntelliJ specific
+.idea/
+*.iml
\ No newline at end of file
diff --git a/core-java-8/README.md b/core-java-8/README.md
new file mode 100644
index 0000000000..4610b3c86d
--- /dev/null
+++ b/core-java-8/README.md
@@ -0,0 +1,32 @@
+=========
+
+## Core Java 8 Cookbooks and Examples
+
+### Relevant Articles:
+- [Java 8 Collectors](http://www.baeldung.com/java-8-collectors)
+- [Guide to Java 8’s Functional Interfaces](http://www.baeldung.com/java-8-functional-interfaces)
+- [Java 8 – Powerful Comparison with Lambdas](http://www.baeldung.com/java-8-sort-lambda)
+- [Java 8 New Features](http://www.baeldung.com/java-8-new-features)
+- [Lambda Expressions and Functional Interfaces: Tips and Best Practices](http://www.baeldung.com/java-8-lambda-expressions-tips)
+- [The Double Colon Operator in Java 8](http://www.baeldung.com/java-8-double-colon-operator)
+- [Java 8 Streams Advanced](http://www.baeldung.com/java-8-streams)
+- [Introduction to Java 8 Streams](http://www.baeldung.com/java-8-streams-introduction)
+- [Guide to Java 8 groupingBy Collector](http://www.baeldung.com/java-groupingby-collector)
+- [Strategy Design Pattern in Java 8](http://www.baeldung.com/java-strategy-pattern)
+- [Java 8 and Infinite Streams](http://www.baeldung.com/java-inifinite-streams)
+- [String Operations with Java Streams](http://www.baeldung.com/java-stream-operations-on-strings)
+- [Exceptions in Java 8 Lambda Expressions](http://www.baeldung.com/java-lambda-exceptions)
+- [Java 8 Stream findFirst() vs. findAny()](http://www.baeldung.com/java-stream-findfirst-vs-findany)
+- [Guide to Java 8 Comparator.comparing()](http://www.baeldung.com/java-8-comparator-comparing)
+- [How to Get the Last Element of a Stream in Java?](http://www.baeldung.com/java-stream-last-element)
+- [Introduction to the Java 8 Date/Time API](http://www.baeldung.com/java-8-date-time-intro)
+- [Migrating to the New Java 8 Date Time API](http://www.baeldung.com/migrating-to-java-8-date-time-api)
+- [Guide To Java 8 Optional](http://www.baeldung.com/java-optional)
+- [Guide to the Java 8 forEach](http://www.baeldung.com/foreach-java)
+- [Get the Current Date, Time and Timestamp in Java 8](http://www.baeldung.com/current-date-time-and-timestamp-in-java-8)
+- [TemporalAdjuster in Java](http://www.baeldung.com/java-temporal-adjuster)
+- [Finding Max/Min of a List or Collection](http://www.baeldung.com/java-collection-min-max)
+- [Java Base64 Encoding and Decoding](http://www.baeldung.com/java-base64-encode-and-decode)
+- [The Difference Between map() and flatMap()](http://www.baeldung.com/java-difference-map-and-flatmap)
+
+- [Merging Streams in Java](http://www.baeldung.com/java-merge-streams)
\ No newline at end of file
diff --git a/core-java-8/pom.xml b/core-java-8/pom.xml
new file mode 100644
index 0000000000..f5506f095e
--- /dev/null
+++ b/core-java-8/pom.xml
@@ -0,0 +1,258 @@
+
+ 4.0.0
+ com.baeldung
+ core-java-8
+ 0.1.0-SNAPSHOT
+ jar
+
+ core-java-8
+
+
+
+ com.baeldung
+ parent-modules
+ 1.0.0-SNAPSHOT
+
+
+
+
+
+
+ com.google.guava
+ guava
+ ${guava.version}
+
+
+
+ org.apache.commons
+ commons-collections4
+ ${commons-collections4.version}
+
+
+
+ commons-io
+ commons-io
+ ${commons-io.version}
+
+
+
+ org.apache.commons
+ commons-lang3
+ ${commons-lang3.version}
+
+
+
+ org.apache.commons
+ commons-math3
+ ${commons-math3.version}
+
+
+
+ log4j
+ log4j
+ 1.2.17
+
+
+
+ commons-codec
+ commons-codec
+ ${commons-codec.version}
+
+
+
+ org.projectlombok
+ lombok
+ ${lombok.version}
+ provided
+
+
+
+
+
+ org.assertj
+ assertj-core
+ ${assertj.version}
+ test
+
+
+
+ com.jayway.awaitility
+ awaitility
+ ${avaitility.version}
+ test
+
+
+
+
+
+ core-java-8
+
+
+ src/main/resources
+ true
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-dependency-plugin
+
+
+ copy-dependencies
+ prepare-package
+
+ copy-dependencies
+
+
+ ${project.build.directory}/libs
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-jar-plugin
+
+
+
+ true
+ libs/
+ org.baeldung.executable.ExecutableMavenJar
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-assembly-plugin
+
+
+ package
+
+ single
+
+
+ ${project.basedir}
+
+
+ org.baeldung.executable.ExecutableMavenJar
+
+
+
+ jar-with-dependencies
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-shade-plugin
+
+
+
+ shade
+
+
+ true
+
+
+ org.baeldung.executable.ExecutableMavenJar
+
+
+
+
+
+
+
+ com.jolira
+ onejar-maven-plugin
+
+
+
+ org.baeldung.executable.ExecutableMavenJar
+ true
+ ${project.build.finalName}-onejar.${project.packaging}
+
+
+ one-jar
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+
+ repackage
+
+
+ spring-boot
+ org.baeldung.executable.ExecutableMavenJar
+
+
+
+
+
+
+
+
+
+
+ integration
+
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+
+
+ integration-test
+
+ test
+
+
+
+ **/*ManualTest.java
+
+
+ **/*IntegrationTest.java
+
+
+
+
+
+
+ json
+
+
+
+
+
+
+
+
+
+
+
+ 21.0
+ 3.5
+ 3.6.1
+ 2.5
+ 4.1
+ 4.01
+ 1.10
+ 1.16.12
+
+
+ 3.6.1
+ 1.7.0
+
+
+
\ No newline at end of file
diff --git a/core-java/src/main/java/com/baeldung/Adder.java b/core-java-8/src/main/java/com/baeldung/Adder.java
similarity index 100%
rename from core-java/src/main/java/com/baeldung/Adder.java
rename to core-java-8/src/main/java/com/baeldung/Adder.java
diff --git a/core-java/src/main/java/com/baeldung/AdderImpl.java b/core-java-8/src/main/java/com/baeldung/AdderImpl.java
similarity index 99%
rename from core-java/src/main/java/com/baeldung/AdderImpl.java
rename to core-java-8/src/main/java/com/baeldung/AdderImpl.java
index f67cdc26b3..7852934d55 100644
--- a/core-java/src/main/java/com/baeldung/AdderImpl.java
+++ b/core-java-8/src/main/java/com/baeldung/AdderImpl.java
@@ -1,5 +1,6 @@
package com.baeldung;
+
import java.util.function.Consumer;
import java.util.function.Function;
diff --git a/core-java/src/main/java/com/baeldung/Bar.java b/core-java-8/src/main/java/com/baeldung/Bar.java
similarity index 99%
rename from core-java/src/main/java/com/baeldung/Bar.java
rename to core-java-8/src/main/java/com/baeldung/Bar.java
index f9b6f2773e..6219bddf74 100644
--- a/core-java/src/main/java/com/baeldung/Bar.java
+++ b/core-java-8/src/main/java/com/baeldung/Bar.java
@@ -1,5 +1,6 @@
package com.baeldung;
+
@FunctionalInterface
public interface Bar {
diff --git a/core-java/src/main/java/com/baeldung/Baz.java b/core-java-8/src/main/java/com/baeldung/Baz.java
similarity index 99%
rename from core-java/src/main/java/com/baeldung/Baz.java
rename to core-java-8/src/main/java/com/baeldung/Baz.java
index 6d03f74198..23180551ac 100644
--- a/core-java/src/main/java/com/baeldung/Baz.java
+++ b/core-java-8/src/main/java/com/baeldung/Baz.java
@@ -1,5 +1,6 @@
package com.baeldung;
+
@FunctionalInterface
public interface Baz {
diff --git a/core-java/src/main/java/com/baeldung/Foo.java b/core-java-8/src/main/java/com/baeldung/Foo.java
similarity index 99%
rename from core-java/src/main/java/com/baeldung/Foo.java
rename to core-java-8/src/main/java/com/baeldung/Foo.java
index 90ebdfeed3..c8223727a1 100644
--- a/core-java/src/main/java/com/baeldung/Foo.java
+++ b/core-java-8/src/main/java/com/baeldung/Foo.java
@@ -1,5 +1,6 @@
package com.baeldung;
+
@FunctionalInterface
public interface Foo {
diff --git a/core-java/src/main/java/com/baeldung/FooExtended.java b/core-java-8/src/main/java/com/baeldung/FooExtended.java
similarity index 99%
rename from core-java/src/main/java/com/baeldung/FooExtended.java
rename to core-java-8/src/main/java/com/baeldung/FooExtended.java
index c8ed0c35dd..8c9b21e397 100644
--- a/core-java/src/main/java/com/baeldung/FooExtended.java
+++ b/core-java-8/src/main/java/com/baeldung/FooExtended.java
@@ -1,5 +1,6 @@
package com.baeldung;
+
@FunctionalInterface
public interface FooExtended extends Baz, Bar {
diff --git a/core-java/src/main/java/com/baeldung/UseFoo.java b/core-java-8/src/main/java/com/baeldung/UseFoo.java
similarity index 99%
rename from core-java/src/main/java/com/baeldung/UseFoo.java
rename to core-java-8/src/main/java/com/baeldung/UseFoo.java
index a91404ebaf..950d02062d 100644
--- a/core-java/src/main/java/com/baeldung/UseFoo.java
+++ b/core-java-8/src/main/java/com/baeldung/UseFoo.java
@@ -1,5 +1,6 @@
package com.baeldung;
+
import java.util.function.Function;
public class UseFoo {
diff --git a/core-java/src/main/java/com/baeldung/datetime/README.md b/core-java-8/src/main/java/com/baeldung/datetime/README.md
similarity index 100%
rename from core-java/src/main/java/com/baeldung/datetime/README.md
rename to core-java-8/src/main/java/com/baeldung/datetime/README.md
diff --git a/core-java/src/main/java/com/baeldung/datetime/UseDuration.java b/core-java-8/src/main/java/com/baeldung/datetime/UseDuration.java
similarity index 100%
rename from core-java/src/main/java/com/baeldung/datetime/UseDuration.java
rename to core-java-8/src/main/java/com/baeldung/datetime/UseDuration.java
diff --git a/core-java/src/main/java/com/baeldung/datetime/UseLocalDate.java b/core-java-8/src/main/java/com/baeldung/datetime/UseLocalDate.java
similarity index 100%
rename from core-java/src/main/java/com/baeldung/datetime/UseLocalDate.java
rename to core-java-8/src/main/java/com/baeldung/datetime/UseLocalDate.java
diff --git a/core-java-8/src/main/java/com/baeldung/datetime/UseLocalDateTime.java b/core-java-8/src/main/java/com/baeldung/datetime/UseLocalDateTime.java
new file mode 100644
index 0000000000..7f39ac2f91
--- /dev/null
+++ b/core-java-8/src/main/java/com/baeldung/datetime/UseLocalDateTime.java
@@ -0,0 +1,11 @@
+package com.baeldung.datetime;
+
+import java.time.LocalDateTime;
+
+public class UseLocalDateTime {
+
+ public LocalDateTime getLocalDateTimeUsingParseMethod(String representation) {
+ return LocalDateTime.parse(representation);
+ }
+
+}
diff --git a/core-java/src/main/java/com/baeldung/datetime/UseLocalTime.java b/core-java-8/src/main/java/com/baeldung/datetime/UseLocalTime.java
similarity index 100%
rename from core-java/src/main/java/com/baeldung/datetime/UseLocalTime.java
rename to core-java-8/src/main/java/com/baeldung/datetime/UseLocalTime.java
diff --git a/core-java/src/main/java/com/baeldung/datetime/UsePeriod.java b/core-java-8/src/main/java/com/baeldung/datetime/UsePeriod.java
similarity index 100%
rename from core-java/src/main/java/com/baeldung/datetime/UsePeriod.java
rename to core-java-8/src/main/java/com/baeldung/datetime/UsePeriod.java
diff --git a/core-java/src/main/java/com/baeldung/datetime/UseToInstant.java b/core-java-8/src/main/java/com/baeldung/datetime/UseToInstant.java
similarity index 100%
rename from core-java/src/main/java/com/baeldung/datetime/UseToInstant.java
rename to core-java-8/src/main/java/com/baeldung/datetime/UseToInstant.java
diff --git a/core-java/src/main/java/com/baeldung/datetime/UseZonedDateTime.java b/core-java-8/src/main/java/com/baeldung/datetime/UseZonedDateTime.java
similarity index 100%
rename from core-java/src/main/java/com/baeldung/datetime/UseZonedDateTime.java
rename to core-java-8/src/main/java/com/baeldung/datetime/UseZonedDateTime.java
diff --git a/core-java/src/main/java/com/baeldung/doublecolon/Computer.java b/core-java-8/src/main/java/com/baeldung/doublecolon/Computer.java
similarity index 100%
rename from core-java/src/main/java/com/baeldung/doublecolon/Computer.java
rename to core-java-8/src/main/java/com/baeldung/doublecolon/Computer.java
diff --git a/core-java/src/main/java/com/baeldung/doublecolon/ComputerUtils.java b/core-java-8/src/main/java/com/baeldung/doublecolon/ComputerUtils.java
similarity index 100%
rename from core-java/src/main/java/com/baeldung/doublecolon/ComputerUtils.java
rename to core-java-8/src/main/java/com/baeldung/doublecolon/ComputerUtils.java
diff --git a/core-java/src/main/java/com/baeldung/doublecolon/MacbookPro.java b/core-java-8/src/main/java/com/baeldung/doublecolon/MacbookPro.java
similarity index 100%
rename from core-java/src/main/java/com/baeldung/doublecolon/MacbookPro.java
rename to core-java-8/src/main/java/com/baeldung/doublecolon/MacbookPro.java
diff --git a/core-java/src/main/java/com/baeldung/doublecolon/function/ComputerPredicate.java b/core-java-8/src/main/java/com/baeldung/doublecolon/function/ComputerPredicate.java
similarity index 100%
rename from core-java/src/main/java/com/baeldung/doublecolon/function/ComputerPredicate.java
rename to core-java-8/src/main/java/com/baeldung/doublecolon/function/ComputerPredicate.java
diff --git a/core-java/src/main/java/com/baeldung/doublecolon/function/TriFunction.java b/core-java-8/src/main/java/com/baeldung/doublecolon/function/TriFunction.java
similarity index 100%
rename from core-java/src/main/java/com/baeldung/doublecolon/function/TriFunction.java
rename to core-java-8/src/main/java/com/baeldung/doublecolon/function/TriFunction.java
diff --git a/core-java/src/main/java/com/baeldung/java8/lambda/exceptions/LambdaExceptionWrappers.java b/core-java-8/src/main/java/com/baeldung/java8/lambda/exceptions/LambdaExceptionWrappers.java
similarity index 100%
rename from core-java/src/main/java/com/baeldung/java8/lambda/exceptions/LambdaExceptionWrappers.java
rename to core-java-8/src/main/java/com/baeldung/java8/lambda/exceptions/LambdaExceptionWrappers.java
diff --git a/core-java/src/main/java/com/baeldung/java8/lambda/exceptions/ThrowingConsumer.java b/core-java-8/src/main/java/com/baeldung/java8/lambda/exceptions/ThrowingConsumer.java
similarity index 100%
rename from core-java/src/main/java/com/baeldung/java8/lambda/exceptions/ThrowingConsumer.java
rename to core-java-8/src/main/java/com/baeldung/java8/lambda/exceptions/ThrowingConsumer.java
diff --git a/core-java/src/main/java/com/baeldung/java_8_features/Address.java b/core-java-8/src/main/java/com/baeldung/java_8_features/Address.java
similarity index 100%
rename from core-java/src/main/java/com/baeldung/java_8_features/Address.java
rename to core-java-8/src/main/java/com/baeldung/java_8_features/Address.java
diff --git a/core-java/src/main/java/com/baeldung/java_8_features/CustomException.java b/core-java-8/src/main/java/com/baeldung/java_8_features/CustomException.java
similarity index 100%
rename from core-java/src/main/java/com/baeldung/java_8_features/CustomException.java
rename to core-java-8/src/main/java/com/baeldung/java_8_features/CustomException.java
diff --git a/core-java/src/main/java/com/baeldung/java_8_features/Detail.java b/core-java-8/src/main/java/com/baeldung/java_8_features/Detail.java
similarity index 100%
rename from core-java/src/main/java/com/baeldung/java_8_features/Detail.java
rename to core-java-8/src/main/java/com/baeldung/java_8_features/Detail.java
diff --git a/core-java/src/main/java/com/baeldung/java_8_features/OptionalAddress.java b/core-java-8/src/main/java/com/baeldung/java_8_features/OptionalAddress.java
similarity index 100%
rename from core-java/src/main/java/com/baeldung/java_8_features/OptionalAddress.java
rename to core-java-8/src/main/java/com/baeldung/java_8_features/OptionalAddress.java
diff --git a/core-java/src/main/java/com/baeldung/java_8_features/OptionalUser.java b/core-java-8/src/main/java/com/baeldung/java_8_features/OptionalUser.java
similarity index 100%
rename from core-java/src/main/java/com/baeldung/java_8_features/OptionalUser.java
rename to core-java-8/src/main/java/com/baeldung/java_8_features/OptionalUser.java
diff --git a/core-java/src/main/java/com/baeldung/java_8_features/Person.java b/core-java-8/src/main/java/com/baeldung/java_8_features/Person.java
similarity index 100%
rename from core-java/src/main/java/com/baeldung/java_8_features/Person.java
rename to core-java-8/src/main/java/com/baeldung/java_8_features/Person.java
diff --git a/core-java/src/main/java/com/baeldung/java_8_features/User.java b/core-java-8/src/main/java/com/baeldung/java_8_features/User.java
similarity index 100%
rename from core-java/src/main/java/com/baeldung/java_8_features/User.java
rename to core-java-8/src/main/java/com/baeldung/java_8_features/User.java
diff --git a/core-java/src/main/java/com/baeldung/java_8_features/Vehicle.java b/core-java-8/src/main/java/com/baeldung/java_8_features/Vehicle.java
similarity index 100%
rename from core-java/src/main/java/com/baeldung/java_8_features/Vehicle.java
rename to core-java-8/src/main/java/com/baeldung/java_8_features/Vehicle.java
diff --git a/core-java/src/main/java/com/baeldung/java_8_features/VehicleImpl.java b/core-java-8/src/main/java/com/baeldung/java_8_features/VehicleImpl.java
similarity index 100%
rename from core-java/src/main/java/com/baeldung/java_8_features/VehicleImpl.java
rename to core-java-8/src/main/java/com/baeldung/java_8_features/VehicleImpl.java
diff --git a/core-java/src/main/java/com/baeldung/java_8_features/groupingby/BlogPost.java b/core-java-8/src/main/java/com/baeldung/java_8_features/groupingby/BlogPost.java
similarity index 100%
rename from core-java/src/main/java/com/baeldung/java_8_features/groupingby/BlogPost.java
rename to core-java-8/src/main/java/com/baeldung/java_8_features/groupingby/BlogPost.java
diff --git a/core-java/src/main/java/com/baeldung/java_8_features/groupingby/BlogPostType.java b/core-java-8/src/main/java/com/baeldung/java_8_features/groupingby/BlogPostType.java
similarity index 100%
rename from core-java/src/main/java/com/baeldung/java_8_features/groupingby/BlogPostType.java
rename to core-java-8/src/main/java/com/baeldung/java_8_features/groupingby/BlogPostType.java
diff --git a/core-java/src/main/java/com/baeldung/optional/Modem.java b/core-java-8/src/main/java/com/baeldung/optional/Modem.java
similarity index 100%
rename from core-java/src/main/java/com/baeldung/optional/Modem.java
rename to core-java-8/src/main/java/com/baeldung/optional/Modem.java
diff --git a/core-java/src/main/java/com/baeldung/optional/Person.java b/core-java-8/src/main/java/com/baeldung/optional/Person.java
similarity index 100%
rename from core-java/src/main/java/com/baeldung/optional/Person.java
rename to core-java-8/src/main/java/com/baeldung/optional/Person.java
diff --git a/core-java/src/main/java/com/baeldung/strategy/ChristmasDiscounter.java b/core-java-8/src/main/java/com/baeldung/strategy/ChristmasDiscounter.java
similarity index 100%
rename from core-java/src/main/java/com/baeldung/strategy/ChristmasDiscounter.java
rename to core-java-8/src/main/java/com/baeldung/strategy/ChristmasDiscounter.java
diff --git a/core-java/src/main/java/com/baeldung/strategy/Discounter.java b/core-java-8/src/main/java/com/baeldung/strategy/Discounter.java
similarity index 100%
rename from core-java/src/main/java/com/baeldung/strategy/Discounter.java
rename to core-java-8/src/main/java/com/baeldung/strategy/Discounter.java
diff --git a/core-java/src/main/java/com/baeldung/strategy/EasterDiscounter.java b/core-java-8/src/main/java/com/baeldung/strategy/EasterDiscounter.java
similarity index 100%
rename from core-java/src/main/java/com/baeldung/strategy/EasterDiscounter.java
rename to core-java-8/src/main/java/com/baeldung/strategy/EasterDiscounter.java
diff --git a/core-java/src/main/java/com/baeldung/stream/InfiniteStreams.java b/core-java-8/src/main/java/com/baeldung/stream/InfiniteStreams.java
similarity index 100%
rename from core-java/src/main/java/com/baeldung/stream/InfiniteStreams.java
rename to core-java-8/src/main/java/com/baeldung/stream/InfiniteStreams.java
diff --git a/core-java/src/main/java/com/baeldung/stream/StreamApi.java b/core-java-8/src/main/java/com/baeldung/stream/StreamApi.java
similarity index 100%
rename from core-java/src/main/java/com/baeldung/stream/StreamApi.java
rename to core-java-8/src/main/java/com/baeldung/stream/StreamApi.java
diff --git a/core-java/src/main/java/com/baeldung/streamApi/Product.java b/core-java-8/src/main/java/com/baeldung/streamApi/Product.java
similarity index 100%
rename from core-java/src/main/java/com/baeldung/streamApi/Product.java
rename to core-java-8/src/main/java/com/baeldung/streamApi/Product.java
diff --git a/core-java/src/main/java/com/baeldung/string/JoinerSplitter.java b/core-java-8/src/main/java/com/baeldung/string/JoinerSplitter.java
similarity index 100%
rename from core-java/src/main/java/com/baeldung/string/JoinerSplitter.java
rename to core-java-8/src/main/java/com/baeldung/string/JoinerSplitter.java
diff --git a/core-java/src/main/java/com/baeldung/temporaladjuster/CustomTemporalAdjuster.java b/core-java-8/src/main/java/com/baeldung/temporaladjuster/CustomTemporalAdjuster.java
similarity index 100%
rename from core-java/src/main/java/com/baeldung/temporaladjuster/CustomTemporalAdjuster.java
rename to core-java-8/src/main/java/com/baeldung/temporaladjuster/CustomTemporalAdjuster.java
diff --git a/core-java/src/test/java/com/baeldung/collectors/Java8CollectorsUnitTest.java b/core-java-8/src/test/java/com/baeldung/collectors/Java8CollectorsUnitTest.java
similarity index 100%
rename from core-java/src/test/java/com/baeldung/collectors/Java8CollectorsUnitTest.java
rename to core-java-8/src/test/java/com/baeldung/collectors/Java8CollectorsUnitTest.java
diff --git a/core-java/src/test/java/com/baeldung/dateapi/ConversionExample.java b/core-java-8/src/test/java/com/baeldung/dateapi/ConversionExample.java
similarity index 100%
rename from core-java/src/test/java/com/baeldung/dateapi/ConversionExample.java
rename to core-java-8/src/test/java/com/baeldung/dateapi/ConversionExample.java
diff --git a/core-java/src/test/java/com/baeldung/dateapi/JavaDurationUnitTest.java b/core-java-8/src/test/java/com/baeldung/dateapi/JavaDurationUnitTest.java
similarity index 100%
rename from core-java/src/test/java/com/baeldung/dateapi/JavaDurationUnitTest.java
rename to core-java-8/src/test/java/com/baeldung/dateapi/JavaDurationUnitTest.java
diff --git a/core-java/src/test/java/com/baeldung/dateapi/JavaPeriodUnitTest.java b/core-java-8/src/test/java/com/baeldung/dateapi/JavaPeriodUnitTest.java
similarity index 100%
rename from core-java/src/test/java/com/baeldung/dateapi/JavaPeriodUnitTest.java
rename to core-java-8/src/test/java/com/baeldung/dateapi/JavaPeriodUnitTest.java
diff --git a/core-java/src/test/java/com/baeldung/dateapi/JavaUtilTimeUnitTest.java b/core-java-8/src/test/java/com/baeldung/dateapi/JavaUtilTimeUnitTest.java
similarity index 100%
rename from core-java/src/test/java/com/baeldung/dateapi/JavaUtilTimeUnitTest.java
rename to core-java-8/src/test/java/com/baeldung/dateapi/JavaUtilTimeUnitTest.java
diff --git a/core-java/src/test/java/com/baeldung/datetime/UseLocalDateTimeUnitTest.java b/core-java-8/src/test/java/com/baeldung/datetime/UseLocalDateTimeUnitTest.java
similarity index 100%
rename from core-java/src/test/java/com/baeldung/datetime/UseLocalDateTimeUnitTest.java
rename to core-java-8/src/test/java/com/baeldung/datetime/UseLocalDateTimeUnitTest.java
diff --git a/core-java/src/test/java/com/baeldung/datetime/UseLocalDateUnitTest.java b/core-java-8/src/test/java/com/baeldung/datetime/UseLocalDateUnitTest.java
similarity index 100%
rename from core-java/src/test/java/com/baeldung/datetime/UseLocalDateUnitTest.java
rename to core-java-8/src/test/java/com/baeldung/datetime/UseLocalDateUnitTest.java
diff --git a/core-java/src/test/java/com/baeldung/datetime/UseLocalTimeUnitTest.java b/core-java-8/src/test/java/com/baeldung/datetime/UseLocalTimeUnitTest.java
similarity index 100%
rename from core-java/src/test/java/com/baeldung/datetime/UseLocalTimeUnitTest.java
rename to core-java-8/src/test/java/com/baeldung/datetime/UseLocalTimeUnitTest.java
diff --git a/core-java/src/test/java/com/baeldung/datetime/UsePeriodUnitTest.java b/core-java-8/src/test/java/com/baeldung/datetime/UsePeriodUnitTest.java
similarity index 100%
rename from core-java/src/test/java/com/baeldung/datetime/UsePeriodUnitTest.java
rename to core-java-8/src/test/java/com/baeldung/datetime/UsePeriodUnitTest.java
diff --git a/core-java/src/test/java/com/baeldung/datetime/UseZonedDateTimeUnitTest.java b/core-java-8/src/test/java/com/baeldung/datetime/UseZonedDateTimeUnitTest.java
similarity index 100%
rename from core-java/src/test/java/com/baeldung/datetime/UseZonedDateTimeUnitTest.java
rename to core-java-8/src/test/java/com/baeldung/datetime/UseZonedDateTimeUnitTest.java
diff --git a/core-java/src/test/java/com/baeldung/doublecolon/ComputerUtilsUnitTest.java b/core-java-8/src/test/java/com/baeldung/doublecolon/ComputerUtilsUnitTest.java
similarity index 100%
rename from core-java/src/test/java/com/baeldung/doublecolon/ComputerUtilsUnitTest.java
rename to core-java-8/src/test/java/com/baeldung/doublecolon/ComputerUtilsUnitTest.java
diff --git a/core-java/src/test/java/com/baeldung/functionalinterface/FunctionalInterfaceUnitTest.java b/core-java-8/src/test/java/com/baeldung/functionalinterface/FunctionalInterfaceUnitTest.java
similarity index 100%
rename from core-java/src/test/java/com/baeldung/functionalinterface/FunctionalInterfaceUnitTest.java
rename to core-java-8/src/test/java/com/baeldung/functionalinterface/FunctionalInterfaceUnitTest.java
diff --git a/core-java/src/test/java/com/baeldung/functionalinterface/ShortToByteFunction.java b/core-java-8/src/test/java/com/baeldung/functionalinterface/ShortToByteFunction.java
similarity index 100%
rename from core-java/src/test/java/com/baeldung/functionalinterface/ShortToByteFunction.java
rename to core-java-8/src/test/java/com/baeldung/functionalinterface/ShortToByteFunction.java
diff --git a/core-java/src/test/java/com/baeldung/java8/Java8CollectionCleanupUnitTest.java b/core-java-8/src/test/java/com/baeldung/java8/Java8CollectionCleanupUnitTest.java
similarity index 100%
rename from core-java/src/test/java/com/baeldung/java8/Java8CollectionCleanupUnitTest.java
rename to core-java-8/src/test/java/com/baeldung/java8/Java8CollectionCleanupUnitTest.java
diff --git a/core-java/src/test/java/com/baeldung/java8/Java8DefaultStaticIntefaceMethodsUnitTest.java b/core-java-8/src/test/java/com/baeldung/java8/Java8DefaultStaticIntefaceMethodsUnitTest.java
similarity index 100%
rename from core-java/src/test/java/com/baeldung/java8/Java8DefaultStaticIntefaceMethodsUnitTest.java
rename to core-java-8/src/test/java/com/baeldung/java8/Java8DefaultStaticIntefaceMethodsUnitTest.java
diff --git a/core-java/src/test/java/com/baeldung/java8/Java8FindAnyFindFirstUnitTest.java b/core-java-8/src/test/java/com/baeldung/java8/Java8FindAnyFindFirstUnitTest.java
similarity index 100%
rename from core-java/src/test/java/com/baeldung/java8/Java8FindAnyFindFirstUnitTest.java
rename to core-java-8/src/test/java/com/baeldung/java8/Java8FindAnyFindFirstUnitTest.java
diff --git a/core-java/src/test/java/com/baeldung/java8/Java8ForEachUnitTest.java b/core-java-8/src/test/java/com/baeldung/java8/Java8ForEachUnitTest.java
similarity index 100%
rename from core-java/src/test/java/com/baeldung/java8/Java8ForEachUnitTest.java
rename to core-java-8/src/test/java/com/baeldung/java8/Java8ForEachUnitTest.java
diff --git a/core-java/src/test/java/com/baeldung/java8/Java8FunctionalInteracesLambdasUnitTest.java b/core-java-8/src/test/java/com/baeldung/java8/Java8FunctionalInteracesLambdasUnitTest.java
similarity index 100%
rename from core-java/src/test/java/com/baeldung/java8/Java8FunctionalInteracesLambdasUnitTest.java
rename to core-java-8/src/test/java/com/baeldung/java8/Java8FunctionalInteracesLambdasUnitTest.java
diff --git a/core-java/src/test/java/com/baeldung/java8/Java8GroupingByCollectorUnitTest.java b/core-java-8/src/test/java/com/baeldung/java8/Java8GroupingByCollectorUnitTest.java
similarity index 100%
rename from core-java/src/test/java/com/baeldung/java8/Java8GroupingByCollectorUnitTest.java
rename to core-java-8/src/test/java/com/baeldung/java8/Java8GroupingByCollectorUnitTest.java
diff --git a/core-java/src/test/java/com/baeldung/java8/Java8MaxMinUnitTest.java b/core-java-8/src/test/java/com/baeldung/java8/Java8MaxMinUnitTest.java
similarity index 100%
rename from core-java/src/test/java/com/baeldung/java8/Java8MaxMinUnitTest.java
rename to core-java-8/src/test/java/com/baeldung/java8/Java8MaxMinUnitTest.java
diff --git a/core-java/src/test/java/com/baeldung/java8/Java8MethodReferenceUnitTest.java b/core-java-8/src/test/java/com/baeldung/java8/Java8MethodReferenceUnitTest.java
similarity index 100%
rename from core-java/src/test/java/com/baeldung/java8/Java8MethodReferenceUnitTest.java
rename to core-java-8/src/test/java/com/baeldung/java8/Java8MethodReferenceUnitTest.java
diff --git a/core-java/src/test/java/com/baeldung/java8/Java8OptionalUnitTest.java b/core-java-8/src/test/java/com/baeldung/java8/Java8OptionalUnitTest.java
similarity index 100%
rename from core-java/src/test/java/com/baeldung/java8/Java8OptionalUnitTest.java
rename to core-java-8/src/test/java/com/baeldung/java8/Java8OptionalUnitTest.java
diff --git a/core-java/src/test/java/com/baeldung/java8/Java8SortUnitTest.java b/core-java-8/src/test/java/com/baeldung/java8/Java8SortUnitTest.java
similarity index 100%
rename from core-java/src/test/java/com/baeldung/java8/Java8SortUnitTest.java
rename to core-java-8/src/test/java/com/baeldung/java8/Java8SortUnitTest.java
diff --git a/core-java/src/test/java/com/baeldung/java8/Java8StreamApiUnitTest.java b/core-java-8/src/test/java/com/baeldung/java8/Java8StreamApiUnitTest.java
similarity index 100%
rename from core-java/src/test/java/com/baeldung/java8/Java8StreamApiUnitTest.java
rename to core-java-8/src/test/java/com/baeldung/java8/Java8StreamApiUnitTest.java
diff --git a/core-java/src/test/java/com/baeldung/java8/Java8StreamsUnitTest.java b/core-java-8/src/test/java/com/baeldung/java8/Java8StreamsUnitTest.java
similarity index 100%
rename from core-java/src/test/java/com/baeldung/java8/Java8StreamsUnitTest.java
rename to core-java-8/src/test/java/com/baeldung/java8/Java8StreamsUnitTest.java
diff --git a/core-java/src/test/java/com/baeldung/java8/JavaTryWithResourcesLongRunningUnitTest.java b/core-java-8/src/test/java/com/baeldung/java8/JavaTryWithResourcesLongRunningUnitTest.java
similarity index 93%
rename from core-java/src/test/java/com/baeldung/java8/JavaTryWithResourcesLongRunningUnitTest.java
rename to core-java-8/src/test/java/com/baeldung/java8/JavaTryWithResourcesLongRunningUnitTest.java
index 28fea0fd31..32879aed0c 100644
--- a/core-java/src/test/java/com/baeldung/java8/JavaTryWithResourcesLongRunningUnitTest.java
+++ b/core-java-8/src/test/java/com/baeldung/java8/JavaTryWithResourcesLongRunningUnitTest.java
@@ -1,20 +1,19 @@
package com.baeldung.java8;
-import org.junit.Assert;
-import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.Date;
import java.util.Scanner;
+import org.junit.Assert;
+import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
public class JavaTryWithResourcesLongRunningUnitTest {
private static final Logger LOG = LoggerFactory.getLogger(JavaTryWithResourcesLongRunningUnitTest.class);
-
private static final String TEST_STRING_HELLO_WORLD = "Hello World";
private Date resource1Date, resource2Date;
@@ -28,7 +27,8 @@ public class JavaTryWithResourcesLongRunningUnitTest {
pw.print(TEST_STRING_HELLO_WORLD);
}
- Assert.assertEquals(sw.getBuffer().toString(), TEST_STRING_HELLO_WORLD);
+ Assert.assertEquals(sw.getBuffer()
+ .toString(), TEST_STRING_HELLO_WORLD);
}
/* Example for using multiple resources */
@@ -42,7 +42,8 @@ public class JavaTryWithResourcesLongRunningUnitTest {
}
}
- Assert.assertEquals(sw.getBuffer().toString(), TEST_STRING_HELLO_WORLD);
+ Assert.assertEquals(sw.getBuffer()
+ .toString(), TEST_STRING_HELLO_WORLD);
}
/* Example to show order in which the resources are closed */
@@ -88,4 +89,4 @@ public class JavaTryWithResourcesLongRunningUnitTest {
}
}
-}
+}
\ No newline at end of file
diff --git a/core-java/src/test/java/com/baeldung/java8/base64/ApacheCommonsEncodeDecodeUnitTest.java b/core-java-8/src/test/java/com/baeldung/java8/base64/ApacheCommonsEncodeDecodeUnitTest.java
similarity index 100%
rename from core-java/src/test/java/com/baeldung/java8/base64/ApacheCommonsEncodeDecodeUnitTest.java
rename to core-java-8/src/test/java/com/baeldung/java8/base64/ApacheCommonsEncodeDecodeUnitTest.java
diff --git a/core-java/src/test/java/com/baeldung/java8/base64/Java8EncodeDecodeUnitTest.java b/core-java-8/src/test/java/com/baeldung/java8/base64/Java8EncodeDecodeUnitTest.java
similarity index 100%
rename from core-java/src/test/java/com/baeldung/java8/base64/Java8EncodeDecodeUnitTest.java
rename to core-java-8/src/test/java/com/baeldung/java8/base64/Java8EncodeDecodeUnitTest.java
diff --git a/core-java/src/test/java/com/baeldung/java8/comparator/Employee.java b/core-java-8/src/test/java/com/baeldung/java8/comparator/Employee.java
similarity index 100%
rename from core-java/src/test/java/com/baeldung/java8/comparator/Employee.java
rename to core-java-8/src/test/java/com/baeldung/java8/comparator/Employee.java
diff --git a/core-java/src/test/java/com/baeldung/java8/comparator/Java8ComparatorUnitTest.java b/core-java-8/src/test/java/com/baeldung/java8/comparator/Java8ComparatorUnitTest.java
similarity index 100%
rename from core-java/src/test/java/com/baeldung/java8/comparator/Java8ComparatorUnitTest.java
rename to core-java-8/src/test/java/com/baeldung/java8/comparator/Java8ComparatorUnitTest.java
diff --git a/core-java/src/test/java/com/baeldung/java8/entity/Human.java b/core-java-8/src/test/java/com/baeldung/java8/entity/Human.java
similarity index 100%
rename from core-java/src/test/java/com/baeldung/java8/entity/Human.java
rename to core-java-8/src/test/java/com/baeldung/java8/entity/Human.java
diff --git a/core-java/src/test/java/com/baeldung/java8/lambda/exceptions/LambdaExceptionWrappersUnitTest.java b/core-java-8/src/test/java/com/baeldung/java8/lambda/exceptions/LambdaExceptionWrappersUnitTest.java
similarity index 100%
rename from core-java/src/test/java/com/baeldung/java8/lambda/exceptions/LambdaExceptionWrappersUnitTest.java
rename to core-java-8/src/test/java/com/baeldung/java8/lambda/exceptions/LambdaExceptionWrappersUnitTest.java
diff --git a/core-java/src/test/java/com/baeldung/java8/optional/OptionalUnitTest.java b/core-java-8/src/test/java/com/baeldung/java8/optional/OptionalUnitTest.java
similarity index 100%
rename from core-java/src/test/java/com/baeldung/java8/optional/OptionalUnitTest.java
rename to core-java-8/src/test/java/com/baeldung/java8/optional/OptionalUnitTest.java
diff --git a/core-java/src/test/java/com/baeldung/strategy/StrategyDesignPatternUnitTest.java b/core-java-8/src/test/java/com/baeldung/strategy/StrategyDesignPatternUnitTest.java
similarity index 100%
rename from core-java/src/test/java/com/baeldung/strategy/StrategyDesignPatternUnitTest.java
rename to core-java-8/src/test/java/com/baeldung/strategy/StrategyDesignPatternUnitTest.java
diff --git a/core-java/src/test/java/com/baeldung/stream/InfiniteStreamUnitTest.java b/core-java-8/src/test/java/com/baeldung/stream/InfiniteStreamUnitTest.java
similarity index 100%
rename from core-java/src/test/java/com/baeldung/stream/InfiniteStreamUnitTest.java
rename to core-java-8/src/test/java/com/baeldung/stream/InfiniteStreamUnitTest.java
diff --git a/core-java/src/test/java/com/baeldung/stream/StreamAddUnitTest.java b/core-java-8/src/test/java/com/baeldung/stream/StreamAddUnitTest.java
similarity index 100%
rename from core-java/src/test/java/com/baeldung/stream/StreamAddUnitTest.java
rename to core-java-8/src/test/java/com/baeldung/stream/StreamAddUnitTest.java
diff --git a/core-java/src/test/java/com/baeldung/stream/StreamApiTest.java b/core-java-8/src/test/java/com/baeldung/stream/StreamApiTest.java
similarity index 100%
rename from core-java/src/test/java/com/baeldung/stream/StreamApiTest.java
rename to core-java-8/src/test/java/com/baeldung/stream/StreamApiTest.java
diff --git a/core-java/src/test/java/com/baeldung/stream/StreamToImmutableTest.java b/core-java-8/src/test/java/com/baeldung/stream/StreamToImmutableTest.java
similarity index 100%
rename from core-java/src/test/java/com/baeldung/stream/StreamToImmutableTest.java
rename to core-java-8/src/test/java/com/baeldung/stream/StreamToImmutableTest.java
diff --git a/core-java/src/test/java/com/baeldung/stream/mycollectors/MyImmutableListCollector.java b/core-java-8/src/test/java/com/baeldung/stream/mycollectors/MyImmutableListCollector.java
similarity index 100%
rename from core-java/src/test/java/com/baeldung/stream/mycollectors/MyImmutableListCollector.java
rename to core-java-8/src/test/java/com/baeldung/stream/mycollectors/MyImmutableListCollector.java
diff --git a/core-java/src/test/java/com/baeldung/string/JoinerSplitterUnitTest.java b/core-java-8/src/test/java/com/baeldung/string/JoinerSplitterUnitTest.java
similarity index 100%
rename from core-java/src/test/java/com/baeldung/string/JoinerSplitterUnitTest.java
rename to core-java-8/src/test/java/com/baeldung/string/JoinerSplitterUnitTest.java
diff --git a/core-java/src/test/java/com/baeldung/temporaladjusters/CustomTemporalAdjusterTest.java b/core-java-8/src/test/java/com/baeldung/temporaladjusters/CustomTemporalAdjusterTest.java
similarity index 100%
rename from core-java/src/test/java/com/baeldung/temporaladjusters/CustomTemporalAdjusterTest.java
rename to core-java-8/src/test/java/com/baeldung/temporaladjusters/CustomTemporalAdjusterTest.java
diff --git a/core-java/src/test/java/com/baeldung/temporaladjusters/TemporalAdjustersTest.java b/core-java-8/src/test/java/com/baeldung/temporaladjusters/TemporalAdjustersTest.java
similarity index 100%
rename from core-java/src/test/java/com/baeldung/temporaladjusters/TemporalAdjustersTest.java
rename to core-java-8/src/test/java/com/baeldung/temporaladjusters/TemporalAdjustersTest.java
diff --git a/core-java/src/test/java/com/baeldung/util/CurrentDateTimeUnitTest.java b/core-java-8/src/test/java/com/baeldung/util/CurrentDateTimeUnitTest.java
similarity index 100%
rename from core-java/src/test/java/com/baeldung/util/CurrentDateTimeUnitTest.java
rename to core-java-8/src/test/java/com/baeldung/util/CurrentDateTimeUnitTest.java
diff --git a/core-java-8/src/test/resources/.gitignore b/core-java-8/src/test/resources/.gitignore
new file mode 100644
index 0000000000..83c05e60c8
--- /dev/null
+++ b/core-java-8/src/test/resources/.gitignore
@@ -0,0 +1,13 @@
+*.class
+
+#folders#
+/target
+/neoDb*
+/data
+/src/main/webapp/WEB-INF/classes
+*/META-INF/*
+
+# Packaged files #
+*.jar
+*.war
+*.ear
\ No newline at end of file
diff --git a/core-java-concurrency/.gitignore b/core-java-concurrency/.gitignore
new file mode 100644
index 0000000000..3de4cc647e
--- /dev/null
+++ b/core-java-concurrency/.gitignore
@@ -0,0 +1,26 @@
+*.class
+
+0.*
+
+#folders#
+/target
+/neoDb*
+/data
+/src/main/webapp/WEB-INF/classes
+*/META-INF/*
+.resourceCache
+
+# Packaged files #
+*.jar
+*.war
+*.ear
+
+# Files generated by integration tests
+*.txt
+backup-pom.xml
+/bin/
+/temp
+
+#IntelliJ specific
+.idea/
+*.iml
\ No newline at end of file
diff --git a/core-java-concurrency/README.md b/core-java-concurrency/README.md
new file mode 100644
index 0000000000..f1d95482d4
--- /dev/null
+++ b/core-java-concurrency/README.md
@@ -0,0 +1,32 @@
+=========
+
+## Core Java Concurrency Examples
+
+### Relevant Articles:
+- [Guide To CompletableFuture](http://www.baeldung.com/java-completablefuture)
+- [A Guide to the Java ExecutorService](http://www.baeldung.com/java-executor-service-tutorial)
+- [Introduction to Thread Pools in Java](http://www.baeldung.com/thread-pool-java-and-guava)
+- [Guide to java.util.concurrent.Future](http://www.baeldung.com/java-future)
+- [Guide to java.util.concurrent.BlockingQueue](http://www.baeldung.com/java-blocking-queue)
+- [Guide to CountDownLatch in Java](http://www.baeldung.com/java-countdown-latch)
+- [A Guide to ConcurrentMap](http://www.baeldung.com/java-concurrent-map)
+- [Guide to PriorityBlockingQueue in Java](http://www.baeldung.com/java-priority-blocking-queue)
+- [Avoiding the ConcurrentModificationException in Java](http://www.baeldung.com/java-concurrentmodificationexception)
+- [Custom Thread Pools In Java 8 Parallel Streams](http://www.baeldung.com/java-8-parallel-streams-custom-threadpool)
+- [Guide to java.util.concurrent.Locks](http://www.baeldung.com/java-concurrent-locks)
+- [An Introduction to ThreadLocal in Java](http://www.baeldung.com/java-threadlocal)
+- [Guide to DelayQueue](http://www.baeldung.com/java-delay-queue)
+- [A Guide to Java SynchronousQueue](http://www.baeldung.com/java-synchronous-queue)
+- [Guide to the Java TransferQueue](http://www.baeldung.com/java-transfer-queue)
+- [Guide to the ConcurrentSkipListMap](http://www.baeldung.com/java-concurrent-skip-list-map)
+- [Difference Between Wait and Sleep in Java](http://www.baeldung.com/java-wait-and-sleep)
+- [LongAdder and LongAccumulator in Java](http://www.baeldung.com/java-longadder-and-longaccumulator)
+- [The Dining Philosophers Problem in Java](http://www.baeldung.com/java-dining-philoshophers)
+- [Guide to CopyOnWriteArrayList](http://www.baeldung.com/java-copy-on-write-arraylist)
+- [Guide to the Java Phaser](http://www.baeldung.com/java-phaser)
+- [Guide to Synchronized Keyword in Java](http://www.baeldung.com/java-synchronized)
+- [An Introduction to Atomic Variables in Java](http://www.baeldung.com/java-atomic-variables)
+- [CyclicBarrier in Java](http://www.baeldung.com/java-cyclic-barrier)
+- [Guide to Volatile Keyword in Java](http://www.baeldung.com/java-volatile)
+- [Overview of the java.util.concurrent](http://www.baeldung.com/java-util-concurrent)
+- [Semaphores in Java](http://www.baeldung.com/java-semaphore)
diff --git a/core-java-concurrency/pom.xml b/core-java-concurrency/pom.xml
new file mode 100644
index 0000000000..bf858047e9
--- /dev/null
+++ b/core-java-concurrency/pom.xml
@@ -0,0 +1,237 @@
+
+ 4.0.0
+ com.baeldung
+ core-java-concurrency
+ 0.1.0-SNAPSHOT
+ jar
+
+ core-java-concurrency
+
+
+ com.baeldung
+ parent-modules
+ 1.0.0-SNAPSHOT
+
+
+
+
+
+
+ com.google.guava
+ guava
+ ${guava.version}
+
+
+
+ org.apache.commons
+ commons-collections4
+ ${commons-collections4.version}
+
+
+
+ commons-io
+ commons-io
+ ${commons-io.version}
+
+
+
+ org.apache.commons
+ commons-lang3
+ ${commons-lang3.version}
+
+
+
+ org.apache.commons
+ commons-math3
+ ${commons-math3.version}
+
+
+
+
+
+
+ org.assertj
+ assertj-core
+ ${assertj.version}
+ test
+
+
+
+ com.jayway.awaitility
+ awaitility
+ ${avaitility.version}
+ test
+
+
+
+
+
+ core-java-concurrency
+
+
+ src/main/resources
+ true
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-dependency-plugin
+
+
+ copy-dependencies
+ prepare-package
+
+ copy-dependencies
+
+
+ ${project.build.directory}/libs
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-jar-plugin
+
+
+
+ true
+ libs/
+ org.baeldung.executable.ExecutableMavenJar
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-assembly-plugin
+
+
+ package
+
+ single
+
+
+ ${project.basedir}
+
+
+ org.baeldung.executable.ExecutableMavenJar
+
+
+
+ jar-with-dependencies
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-shade-plugin
+
+
+
+ shade
+
+
+ true
+
+
+ org.baeldung.executable.ExecutableMavenJar
+
+
+
+
+
+
+
+ com.jolira
+ onejar-maven-plugin
+
+
+
+ org.baeldung.executable.ExecutableMavenJar
+ true
+ ${project.build.finalName}-onejar.${project.packaging}
+
+
+ one-jar
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+
+ repackage
+
+
+ spring-boot
+ org.baeldung.executable.ExecutableMavenJar
+
+
+
+
+
+
+
+
+
+
+ integration
+
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+
+
+ integration-test
+
+ test
+
+
+
+ **/*ManualTest.java
+
+
+ **/*IntegrationTest.java
+
+
+
+
+
+
+ json
+
+
+
+
+
+
+
+
+
+
+
+ 21.0
+ 3.5
+ 3.6.1
+ 2.5
+ 4.1
+ 4.01
+
+
+ 3.6.1
+ 1.7.0
+
+
+
diff --git a/core-java/src/main/java/com/baeldung/concurrent/Scheduledexecutorservice/ScheduledExecutorServiceDemo.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/Scheduledexecutorservice/ScheduledExecutorServiceDemo.java
similarity index 100%
rename from core-java/src/main/java/com/baeldung/concurrent/Scheduledexecutorservice/ScheduledExecutorServiceDemo.java
rename to core-java-concurrency/src/main/java/com/baeldung/concurrent/Scheduledexecutorservice/ScheduledExecutorServiceDemo.java
diff --git a/core-java/src/main/java/com/baeldung/concurrent/atomic/SafeCounterWithLock.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/atomic/SafeCounterWithLock.java
similarity index 67%
rename from core-java/src/main/java/com/baeldung/concurrent/atomic/SafeCounterWithLock.java
rename to core-java-concurrency/src/main/java/com/baeldung/concurrent/atomic/SafeCounterWithLock.java
index 38633011bf..e3a1629ce1 100644
--- a/core-java/src/main/java/com/baeldung/concurrent/atomic/SafeCounterWithLock.java
+++ b/core-java-concurrency/src/main/java/com/baeldung/concurrent/atomic/SafeCounterWithLock.java
@@ -3,11 +3,11 @@ package com.baeldung.concurrent.atomic;
public class SafeCounterWithLock {
private volatile int counter;
- public int getValue() {
+ int getValue() {
return counter;
}
- public synchronized void increment() {
+ synchronized void increment() {
counter++;
}
}
diff --git a/core-java/src/main/java/com/baeldung/concurrent/atomic/SafeCounterWithoutLock.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/atomic/SafeCounterWithoutLock.java
similarity index 85%
rename from core-java/src/main/java/com/baeldung/concurrent/atomic/SafeCounterWithoutLock.java
rename to core-java-concurrency/src/main/java/com/baeldung/concurrent/atomic/SafeCounterWithoutLock.java
index 41e10789a6..18ade35efb 100644
--- a/core-java/src/main/java/com/baeldung/concurrent/atomic/SafeCounterWithoutLock.java
+++ b/core-java-concurrency/src/main/java/com/baeldung/concurrent/atomic/SafeCounterWithoutLock.java
@@ -5,11 +5,11 @@ import java.util.concurrent.atomic.AtomicInteger;
public class SafeCounterWithoutLock {
private final AtomicInteger counter = new AtomicInteger(0);
- public int getValue() {
+ int getValue() {
return counter.get();
}
- public void increment() {
+ void increment() {
while(true) {
int existingValue = getValue();
int newValue = existingValue + 1;
diff --git a/core-java/src/main/java/com/baeldung/concurrent/atomic/UnsafeCounter.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/atomic/UnsafeCounter.java
similarity index 60%
rename from core-java/src/main/java/com/baeldung/concurrent/atomic/UnsafeCounter.java
rename to core-java-concurrency/src/main/java/com/baeldung/concurrent/atomic/UnsafeCounter.java
index 8a72788842..500ef5bd7e 100644
--- a/core-java/src/main/java/com/baeldung/concurrent/atomic/UnsafeCounter.java
+++ b/core-java-concurrency/src/main/java/com/baeldung/concurrent/atomic/UnsafeCounter.java
@@ -1,13 +1,13 @@
package com.baeldung.concurrent.atomic;
public class UnsafeCounter {
- int counter;
+ private int counter;
- public int getValue() {
+ int getValue() {
return counter;
}
- public void increment() {
+ void increment() {
counter++;
}
}
diff --git a/core-java/src/main/java/com/baeldung/concurrent/blockingqueue/BlockingQueueUsage.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/blockingqueue/BlockingQueueUsage.java
similarity index 100%
rename from core-java/src/main/java/com/baeldung/concurrent/blockingqueue/BlockingQueueUsage.java
rename to core-java-concurrency/src/main/java/com/baeldung/concurrent/blockingqueue/BlockingQueueUsage.java
diff --git a/core-java/src/main/java/com/baeldung/concurrent/blockingqueue/NumbersConsumer.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/blockingqueue/NumbersConsumer.java
similarity index 100%
rename from core-java/src/main/java/com/baeldung/concurrent/blockingqueue/NumbersConsumer.java
rename to core-java-concurrency/src/main/java/com/baeldung/concurrent/blockingqueue/NumbersConsumer.java
diff --git a/core-java/src/main/java/com/baeldung/concurrent/blockingqueue/NumbersProducer.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/blockingqueue/NumbersProducer.java
similarity index 100%
rename from core-java/src/main/java/com/baeldung/concurrent/blockingqueue/NumbersProducer.java
rename to core-java-concurrency/src/main/java/com/baeldung/concurrent/blockingqueue/NumbersProducer.java
diff --git a/core-java-concurrency/src/main/java/com/baeldung/concurrent/callable/FactorialTask.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/callable/FactorialTask.java
new file mode 100644
index 0000000000..8663609d2d
--- /dev/null
+++ b/core-java-concurrency/src/main/java/com/baeldung/concurrent/callable/FactorialTask.java
@@ -0,0 +1,30 @@
+package com.baeldung.concurrent.callable;
+
+
+import java.util.concurrent.Callable;
+
+public class FactorialTask implements Callable {
+ int number;
+
+ public FactorialTask(int number) {
+ this.number = number;
+ }
+
+ public Integer call() throws InvalidParamaterException {
+ int fact=1;
+ if(number < 0)
+ throw new InvalidParamaterException("Number must be positive");
+
+ for(int count=number;count>1;count--){
+ fact=fact * count;
+ }
+
+ return fact;
+ }
+
+ private class InvalidParamaterException extends Exception {
+ public InvalidParamaterException(String message) {
+ super(message);
+ }
+ }
+}
diff --git a/core-java/src/main/java/com/baeldung/concurrent/countdownlatch/BrokenWorker.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/countdownlatch/BrokenWorker.java
similarity index 100%
rename from core-java/src/main/java/com/baeldung/concurrent/countdownlatch/BrokenWorker.java
rename to core-java-concurrency/src/main/java/com/baeldung/concurrent/countdownlatch/BrokenWorker.java
diff --git a/core-java/src/main/java/com/baeldung/concurrent/countdownlatch/WaitingWorker.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/countdownlatch/WaitingWorker.java
similarity index 100%
rename from core-java/src/main/java/com/baeldung/concurrent/countdownlatch/WaitingWorker.java
rename to core-java-concurrency/src/main/java/com/baeldung/concurrent/countdownlatch/WaitingWorker.java
diff --git a/core-java/src/main/java/com/baeldung/concurrent/countdownlatch/Worker.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/countdownlatch/Worker.java
similarity index 100%
rename from core-java/src/main/java/com/baeldung/concurrent/countdownlatch/Worker.java
rename to core-java-concurrency/src/main/java/com/baeldung/concurrent/countdownlatch/Worker.java
diff --git a/core-java/src/main/java/com/baeldung/concurrent/cyclicbarrier/CyclicBarrierDemo.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/cyclicbarrier/CyclicBarrierDemo.java
similarity index 100%
rename from core-java/src/main/java/com/baeldung/concurrent/cyclicbarrier/CyclicBarrierDemo.java
rename to core-java-concurrency/src/main/java/com/baeldung/concurrent/cyclicbarrier/CyclicBarrierDemo.java
diff --git a/core-java/src/main/java/com/baeldung/concurrent/cyclicbarrier/CyclicBarrierExample.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/cyclicbarrier/CyclicBarrierExample.java
similarity index 100%
rename from core-java/src/main/java/com/baeldung/concurrent/cyclicbarrier/CyclicBarrierExample.java
rename to core-java-concurrency/src/main/java/com/baeldung/concurrent/cyclicbarrier/CyclicBarrierExample.java
diff --git a/core-java/src/main/java/com/baeldung/concurrent/cyclicbarrier/Task.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/cyclicbarrier/Task.java
similarity index 100%
rename from core-java/src/main/java/com/baeldung/concurrent/cyclicbarrier/Task.java
rename to core-java-concurrency/src/main/java/com/baeldung/concurrent/cyclicbarrier/Task.java
diff --git a/core-java/src/main/java/com/baeldung/concurrent/delayqueue/DelayObject.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/delayqueue/DelayObject.java
similarity index 100%
rename from core-java/src/main/java/com/baeldung/concurrent/delayqueue/DelayObject.java
rename to core-java-concurrency/src/main/java/com/baeldung/concurrent/delayqueue/DelayObject.java
diff --git a/core-java/src/main/java/com/baeldung/concurrent/delayqueue/DelayQueueConsumer.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/delayqueue/DelayQueueConsumer.java
similarity index 100%
rename from core-java/src/main/java/com/baeldung/concurrent/delayqueue/DelayQueueConsumer.java
rename to core-java-concurrency/src/main/java/com/baeldung/concurrent/delayqueue/DelayQueueConsumer.java
diff --git a/core-java/src/main/java/com/baeldung/concurrent/delayqueue/DelayQueueProducer.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/delayqueue/DelayQueueProducer.java
similarity index 100%
rename from core-java/src/main/java/com/baeldung/concurrent/delayqueue/DelayQueueProducer.java
rename to core-java-concurrency/src/main/java/com/baeldung/concurrent/delayqueue/DelayQueueProducer.java
diff --git a/core-java/src/main/java/com/baeldung/concurrent/diningphilosophers/DiningPhilosophers.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/diningphilosophers/DiningPhilosophers.java
similarity index 100%
rename from core-java/src/main/java/com/baeldung/concurrent/diningphilosophers/DiningPhilosophers.java
rename to core-java-concurrency/src/main/java/com/baeldung/concurrent/diningphilosophers/DiningPhilosophers.java
diff --git a/core-java/src/main/java/com/baeldung/concurrent/diningphilosophers/Philosopher.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/diningphilosophers/Philosopher.java
similarity index 100%
rename from core-java/src/main/java/com/baeldung/concurrent/diningphilosophers/Philosopher.java
rename to core-java-concurrency/src/main/java/com/baeldung/concurrent/diningphilosophers/Philosopher.java
diff --git a/core-java/src/main/java/com/baeldung/concurrent/executor/ExecutorDemo.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/executor/ExecutorDemo.java
similarity index 100%
rename from core-java/src/main/java/com/baeldung/concurrent/executor/ExecutorDemo.java
rename to core-java-concurrency/src/main/java/com/baeldung/concurrent/executor/ExecutorDemo.java
diff --git a/core-java/src/main/java/com/baeldung/concurrent/executor/Invoker.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/executor/Invoker.java
similarity index 100%
rename from core-java/src/main/java/com/baeldung/concurrent/executor/Invoker.java
rename to core-java-concurrency/src/main/java/com/baeldung/concurrent/executor/Invoker.java
diff --git a/core-java/src/main/java/com/baeldung/concurrent/executorservice/ExecutorServiceDemo.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/executorservice/ExecutorServiceDemo.java
similarity index 100%
rename from core-java/src/main/java/com/baeldung/concurrent/executorservice/ExecutorServiceDemo.java
rename to core-java-concurrency/src/main/java/com/baeldung/concurrent/executorservice/ExecutorServiceDemo.java
diff --git a/core-java/src/main/java/com/baeldung/concurrent/executorservice/Task.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/executorservice/Task.java
similarity index 100%
rename from core-java/src/main/java/com/baeldung/concurrent/executorservice/Task.java
rename to core-java-concurrency/src/main/java/com/baeldung/concurrent/executorservice/Task.java
diff --git a/core-java/src/main/java/com/baeldung/concurrent/future/FactorialSquareCalculator.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/future/FactorialSquareCalculator.java
similarity index 100%
rename from core-java/src/main/java/com/baeldung/concurrent/future/FactorialSquareCalculator.java
rename to core-java-concurrency/src/main/java/com/baeldung/concurrent/future/FactorialSquareCalculator.java
diff --git a/core-java/src/main/java/com/baeldung/concurrent/future/FutureDemo.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/future/FutureDemo.java
similarity index 100%
rename from core-java/src/main/java/com/baeldung/concurrent/future/FutureDemo.java
rename to core-java-concurrency/src/main/java/com/baeldung/concurrent/future/FutureDemo.java
diff --git a/core-java/src/main/java/com/baeldung/concurrent/future/SquareCalculator.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/future/SquareCalculator.java
similarity index 100%
rename from core-java/src/main/java/com/baeldung/concurrent/future/SquareCalculator.java
rename to core-java-concurrency/src/main/java/com/baeldung/concurrent/future/SquareCalculator.java
diff --git a/core-java/src/main/java/com/baeldung/concurrent/locks/ReentrantLockWithCondition.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/locks/ReentrantLockWithCondition.java
similarity index 100%
rename from core-java/src/main/java/com/baeldung/concurrent/locks/ReentrantLockWithCondition.java
rename to core-java-concurrency/src/main/java/com/baeldung/concurrent/locks/ReentrantLockWithCondition.java
diff --git a/core-java/src/main/java/com/baeldung/concurrent/locks/SharedObjectWithLock.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/locks/SharedObjectWithLock.java
similarity index 100%
rename from core-java/src/main/java/com/baeldung/concurrent/locks/SharedObjectWithLock.java
rename to core-java-concurrency/src/main/java/com/baeldung/concurrent/locks/SharedObjectWithLock.java
diff --git a/core-java/src/main/java/com/baeldung/concurrent/locks/StampedLockDemo.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/locks/StampedLockDemo.java
similarity index 100%
rename from core-java/src/main/java/com/baeldung/concurrent/locks/StampedLockDemo.java
rename to core-java-concurrency/src/main/java/com/baeldung/concurrent/locks/StampedLockDemo.java
diff --git a/core-java/src/main/java/com/baeldung/concurrent/locks/SynchronizedHashMapWithRWLock.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/locks/SynchronizedHashMapWithRWLock.java
similarity index 100%
rename from core-java/src/main/java/com/baeldung/concurrent/locks/SynchronizedHashMapWithRWLock.java
rename to core-java-concurrency/src/main/java/com/baeldung/concurrent/locks/SynchronizedHashMapWithRWLock.java
diff --git a/core-java/src/main/java/com/baeldung/concurrent/phaser/LongRunningAction.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/phaser/LongRunningAction.java
similarity index 100%
rename from core-java/src/main/java/com/baeldung/concurrent/phaser/LongRunningAction.java
rename to core-java-concurrency/src/main/java/com/baeldung/concurrent/phaser/LongRunningAction.java
diff --git a/core-java-concurrency/src/main/java/com/baeldung/concurrent/runnable/EventLoggingTask.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/runnable/EventLoggingTask.java
new file mode 100644
index 0000000000..d65f79202e
--- /dev/null
+++ b/core-java-concurrency/src/main/java/com/baeldung/concurrent/runnable/EventLoggingTask.java
@@ -0,0 +1,17 @@
+package com.baeldung.concurrent.runnable;
+
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class EventLoggingTask implements Runnable{
+ private Logger logger = LoggerFactory.getLogger(EventLoggingTask.class);
+
+ @Override
+ public void run() {
+
+ String messge="Message read from the event queue";
+ logger.info("Message read from event queue is "+messge);
+
+ }
+}
diff --git a/core-java-concurrency/src/main/java/com/baeldung/concurrent/runnable/TaskRunner.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/runnable/TaskRunner.java
new file mode 100644
index 0000000000..8fd98e77b8
--- /dev/null
+++ b/core-java-concurrency/src/main/java/com/baeldung/concurrent/runnable/TaskRunner.java
@@ -0,0 +1,25 @@
+package com.baeldung.concurrent.runnable;
+
+
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.Future;
+
+public class TaskRunner {
+
+ private static ExecutorService executorService;
+
+ public static void main(String[] args) {
+ executeTask();
+ }
+
+ private static void executeTask() {
+ executorService= Executors.newSingleThreadExecutor();
+
+ EventLoggingTask task = new EventLoggingTask();
+
+ Future future = executorService.submit(task);
+
+ executorService.shutdown();
+ }
+}
diff --git a/core-java/src/main/java/com/baeldung/concurrent/semaphore/SemaPhoreDemo.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/semaphore/SemaPhoreDemo.java
similarity index 100%
rename from core-java/src/main/java/com/baeldung/concurrent/semaphore/SemaPhoreDemo.java
rename to core-java-concurrency/src/main/java/com/baeldung/concurrent/semaphore/SemaPhoreDemo.java
diff --git a/core-java/src/main/java/com/baeldung/concurrent/semaphores/CounterUsingMutex.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/semaphores/CounterUsingMutex.java
similarity index 100%
rename from core-java/src/main/java/com/baeldung/concurrent/semaphores/CounterUsingMutex.java
rename to core-java-concurrency/src/main/java/com/baeldung/concurrent/semaphores/CounterUsingMutex.java
diff --git a/core-java/src/main/java/com/baeldung/concurrent/semaphores/DelayQueueUsingTimedSemaphore.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/semaphores/DelayQueueUsingTimedSemaphore.java
similarity index 100%
rename from core-java/src/main/java/com/baeldung/concurrent/semaphores/DelayQueueUsingTimedSemaphore.java
rename to core-java-concurrency/src/main/java/com/baeldung/concurrent/semaphores/DelayQueueUsingTimedSemaphore.java
diff --git a/core-java/src/main/java/com/baeldung/concurrent/semaphores/LoginQueueUsingSemaphore.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/semaphores/LoginQueueUsingSemaphore.java
similarity index 100%
rename from core-java/src/main/java/com/baeldung/concurrent/semaphores/LoginQueueUsingSemaphore.java
rename to core-java-concurrency/src/main/java/com/baeldung/concurrent/semaphores/LoginQueueUsingSemaphore.java
diff --git a/core-java/src/main/java/com/baeldung/concurrent/skiplist/Event.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/skiplist/Event.java
similarity index 100%
rename from core-java/src/main/java/com/baeldung/concurrent/skiplist/Event.java
rename to core-java-concurrency/src/main/java/com/baeldung/concurrent/skiplist/Event.java
diff --git a/core-java/src/main/java/com/baeldung/concurrent/skiplist/EventWindowSort.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/skiplist/EventWindowSort.java
similarity index 100%
rename from core-java/src/main/java/com/baeldung/concurrent/skiplist/EventWindowSort.java
rename to core-java-concurrency/src/main/java/com/baeldung/concurrent/skiplist/EventWindowSort.java
diff --git a/core-java/src/main/java/com/baeldung/concurrent/sleepwait/ThreadA.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/sleepwait/ThreadA.java
similarity index 100%
rename from core-java/src/main/java/com/baeldung/concurrent/sleepwait/ThreadA.java
rename to core-java-concurrency/src/main/java/com/baeldung/concurrent/sleepwait/ThreadA.java
diff --git a/core-java/src/main/java/com/baeldung/concurrent/sleepwait/ThreadB.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/sleepwait/ThreadB.java
similarity index 100%
rename from core-java/src/main/java/com/baeldung/concurrent/sleepwait/ThreadB.java
rename to core-java-concurrency/src/main/java/com/baeldung/concurrent/sleepwait/ThreadB.java
diff --git a/core-java/src/main/java/com/baeldung/concurrent/sleepwait/WaitSleepExample.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/sleepwait/WaitSleepExample.java
similarity index 100%
rename from core-java/src/main/java/com/baeldung/concurrent/sleepwait/WaitSleepExample.java
rename to core-java-concurrency/src/main/java/com/baeldung/concurrent/sleepwait/WaitSleepExample.java
diff --git a/core-java/src/main/java/com/baeldung/concurrent/synchronize/BaeldungSynchronizedBlocks.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/synchronize/BaeldungSynchronizedBlocks.java
similarity index 100%
rename from core-java/src/main/java/com/baeldung/concurrent/synchronize/BaeldungSynchronizedBlocks.java
rename to core-java-concurrency/src/main/java/com/baeldung/concurrent/synchronize/BaeldungSynchronizedBlocks.java
diff --git a/core-java/src/main/java/com/baeldung/concurrent/synchronize/BaeldungSynchronizedMethods.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/synchronize/BaeldungSynchronizedMethods.java
similarity index 100%
rename from core-java/src/main/java/com/baeldung/concurrent/synchronize/BaeldungSynchronizedMethods.java
rename to core-java-concurrency/src/main/java/com/baeldung/concurrent/synchronize/BaeldungSynchronizedMethods.java
diff --git a/core-java/src/main/java/com/baeldung/concurrent/threadfactory/BaeldungThreadFactory.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/threadfactory/BaeldungThreadFactory.java
similarity index 100%
rename from core-java/src/main/java/com/baeldung/concurrent/threadfactory/BaeldungThreadFactory.java
rename to core-java-concurrency/src/main/java/com/baeldung/concurrent/threadfactory/BaeldungThreadFactory.java
diff --git a/core-java/src/main/java/com/baeldung/concurrent/threadfactory/Demo.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/threadfactory/Demo.java
similarity index 100%
rename from core-java/src/main/java/com/baeldung/concurrent/threadfactory/Demo.java
rename to core-java-concurrency/src/main/java/com/baeldung/concurrent/threadfactory/Demo.java
diff --git a/core-java/src/main/java/com/baeldung/concurrent/threadfactory/Task.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/threadfactory/Task.java
similarity index 100%
rename from core-java/src/main/java/com/baeldung/concurrent/threadfactory/Task.java
rename to core-java-concurrency/src/main/java/com/baeldung/concurrent/threadfactory/Task.java
diff --git a/core-java/src/main/java/com/baeldung/concurrent/volatilekeyword/SharedObject.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/volatilekeyword/SharedObject.java
similarity index 100%
rename from core-java/src/main/java/com/baeldung/concurrent/volatilekeyword/SharedObject.java
rename to core-java-concurrency/src/main/java/com/baeldung/concurrent/volatilekeyword/SharedObject.java
diff --git a/core-java/src/main/java/com/baeldung/threadlocal/Context.java b/core-java-concurrency/src/main/java/com/baeldung/threadlocal/Context.java
similarity index 65%
rename from core-java/src/main/java/com/baeldung/threadlocal/Context.java
rename to core-java-concurrency/src/main/java/com/baeldung/threadlocal/Context.java
index 241fb2f1e0..88b78fb259 100644
--- a/core-java/src/main/java/com/baeldung/threadlocal/Context.java
+++ b/core-java-concurrency/src/main/java/com/baeldung/threadlocal/Context.java
@@ -4,14 +4,14 @@ package com.baeldung.threadlocal;
public class Context {
private final String userName;
- public Context(String userName) {
+ Context(String userName) {
this.userName = userName;
}
@Override
public String toString() {
return "Context{" +
- "userNameSecret='" + userName + '\'' +
- '}';
+ "userNameSecret='" + userName + '\'' +
+ '}';
}
}
diff --git a/core-java/src/main/java/com/baeldung/threadlocal/SharedMapWithUserContext.java b/core-java-concurrency/src/main/java/com/baeldung/threadlocal/SharedMapWithUserContext.java
similarity index 76%
rename from core-java/src/main/java/com/baeldung/threadlocal/SharedMapWithUserContext.java
rename to core-java-concurrency/src/main/java/com/baeldung/threadlocal/SharedMapWithUserContext.java
index e5854e218a..8cb4b3968f 100644
--- a/core-java/src/main/java/com/baeldung/threadlocal/SharedMapWithUserContext.java
+++ b/core-java-concurrency/src/main/java/com/baeldung/threadlocal/SharedMapWithUserContext.java
@@ -5,11 +5,11 @@ import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
public class SharedMapWithUserContext implements Runnable {
- public final static Map userContextPerUserId = new ConcurrentHashMap<>();
+ final static Map userContextPerUserId = new ConcurrentHashMap<>();
private final Integer userId;
private UserRepository userRepository = new UserRepository();
- public SharedMapWithUserContext(Integer userId) {
+ SharedMapWithUserContext(Integer userId) {
this.userId = userId;
}
diff --git a/core-java/src/main/java/com/baeldung/threadlocal/ThreadLocalWithUserContext.java b/core-java-concurrency/src/main/java/com/baeldung/threadlocal/ThreadLocalWithUserContext.java
similarity index 92%
rename from core-java/src/main/java/com/baeldung/threadlocal/ThreadLocalWithUserContext.java
rename to core-java-concurrency/src/main/java/com/baeldung/threadlocal/ThreadLocalWithUserContext.java
index de7e4a0369..d4ab906c30 100644
--- a/core-java/src/main/java/com/baeldung/threadlocal/ThreadLocalWithUserContext.java
+++ b/core-java-concurrency/src/main/java/com/baeldung/threadlocal/ThreadLocalWithUserContext.java
@@ -10,7 +10,7 @@ public class ThreadLocalWithUserContext implements Runnable {
private final Integer userId;
private UserRepository userRepository = new UserRepository();
- public ThreadLocalWithUserContext(Integer userId) {
+ ThreadLocalWithUserContext(Integer userId) {
this.userId = userId;
}
diff --git a/core-java/src/main/java/com/baeldung/threadlocal/UserRepository.java b/core-java-concurrency/src/main/java/com/baeldung/threadlocal/UserRepository.java
similarity index 71%
rename from core-java/src/main/java/com/baeldung/threadlocal/UserRepository.java
rename to core-java-concurrency/src/main/java/com/baeldung/threadlocal/UserRepository.java
index 3fe76f75c0..2597594940 100644
--- a/core-java/src/main/java/com/baeldung/threadlocal/UserRepository.java
+++ b/core-java-concurrency/src/main/java/com/baeldung/threadlocal/UserRepository.java
@@ -4,7 +4,7 @@ import java.util.UUID;
public class UserRepository {
- public String getUserNameForUserId(Integer userId) {
+ String getUserNameForUserId(Integer userId) {
return UUID.randomUUID().toString();
}
}
diff --git a/core-java/src/main/java/com/baeldung/threadpool/CountingTask.java b/core-java-concurrency/src/main/java/com/baeldung/threadpool/CountingTask.java
similarity index 56%
rename from core-java/src/main/java/com/baeldung/threadpool/CountingTask.java
rename to core-java-concurrency/src/main/java/com/baeldung/threadpool/CountingTask.java
index effdf54916..a7447d040f 100644
--- a/core-java/src/main/java/com/baeldung/threadpool/CountingTask.java
+++ b/core-java-concurrency/src/main/java/com/baeldung/threadpool/CountingTask.java
@@ -2,19 +2,21 @@ package com.baeldung.threadpool;
import java.util.concurrent.ForkJoinTask;
import java.util.concurrent.RecursiveTask;
-import java.util.stream.Collectors;
public class CountingTask extends RecursiveTask {
private final TreeNode node;
- public CountingTask(TreeNode node) {
+ CountingTask(TreeNode node) {
this.node = node;
}
@Override
protected Integer compute() {
- return node.value + node.children.stream().map(childNode -> new CountingTask(childNode).fork()).collect(Collectors.summingInt(ForkJoinTask::join));
+ return node.getValue() + node.getChildren().stream()
+ .map(childNode -> new CountingTask(childNode).fork())
+ .mapToInt(ForkJoinTask::join)
+ .sum();
}
}
diff --git a/core-java/src/main/java/com/baeldung/threadpool/ExitingExecutorServiceExample.java b/core-java-concurrency/src/main/java/com/baeldung/threadpool/ExitingExecutorServiceExample.java
similarity index 100%
rename from core-java/src/main/java/com/baeldung/threadpool/ExitingExecutorServiceExample.java
rename to core-java-concurrency/src/main/java/com/baeldung/threadpool/ExitingExecutorServiceExample.java
diff --git a/core-java-concurrency/src/main/java/com/baeldung/threadpool/TreeNode.java b/core-java-concurrency/src/main/java/com/baeldung/threadpool/TreeNode.java
new file mode 100644
index 0000000000..a3283cf930
--- /dev/null
+++ b/core-java-concurrency/src/main/java/com/baeldung/threadpool/TreeNode.java
@@ -0,0 +1,25 @@
+package com.baeldung.threadpool;
+
+import com.google.common.collect.Sets;
+
+import java.util.Set;
+
+public class TreeNode {
+
+ private int value;
+
+ private Set children;
+
+ TreeNode(int value, TreeNode... children) {
+ this.value = value;
+ this.children = Sets.newHashSet(children);
+ }
+
+ public int getValue() {
+ return value;
+ }
+
+ public Set getChildren() {
+ return children;
+ }
+}
\ No newline at end of file
diff --git a/core-java/src/main/java/com/baeldung/transferqueue/Consumer.java b/core-java-concurrency/src/main/java/com/baeldung/transferqueue/Consumer.java
similarity index 83%
rename from core-java/src/main/java/com/baeldung/transferqueue/Consumer.java
rename to core-java-concurrency/src/main/java/com/baeldung/transferqueue/Consumer.java
index a5f70d9df5..f3be6a030e 100644
--- a/core-java/src/main/java/com/baeldung/transferqueue/Consumer.java
+++ b/core-java-concurrency/src/main/java/com/baeldung/transferqueue/Consumer.java
@@ -11,10 +11,10 @@ public class Consumer implements Runnable {
private final TransferQueue transferQueue;
private final String name;
- private final int numberOfMessagesToConsume;
- public final AtomicInteger numberOfConsumedMessages = new AtomicInteger();
+ final int numberOfMessagesToConsume;
+ final AtomicInteger numberOfConsumedMessages = new AtomicInteger();
- public Consumer(TransferQueue transferQueue, String name, int numberOfMessagesToConsume) {
+ Consumer(TransferQueue transferQueue, String name, int numberOfMessagesToConsume) {
this.transferQueue = transferQueue;
this.name = name;
this.numberOfMessagesToConsume = numberOfMessagesToConsume;
diff --git a/core-java/src/main/java/com/baeldung/transferqueue/Producer.java b/core-java-concurrency/src/main/java/com/baeldung/transferqueue/Producer.java
similarity index 84%
rename from core-java/src/main/java/com/baeldung/transferqueue/Producer.java
rename to core-java-concurrency/src/main/java/com/baeldung/transferqueue/Producer.java
index c7df7c410a..b73cf5ac19 100644
--- a/core-java/src/main/java/com/baeldung/transferqueue/Producer.java
+++ b/core-java-concurrency/src/main/java/com/baeldung/transferqueue/Producer.java
@@ -12,10 +12,10 @@ public class Producer implements Runnable {
private final TransferQueue transferQueue;
private final String name;
- private final Integer numberOfMessagesToProduce;
- public final AtomicInteger numberOfProducedMessages = new AtomicInteger();
+ final Integer numberOfMessagesToProduce;
+ final AtomicInteger numberOfProducedMessages = new AtomicInteger();
- public Producer(TransferQueue transferQueue, String name, Integer numberOfMessagesToProduce) {
+ Producer(TransferQueue transferQueue, String name, Integer numberOfMessagesToProduce) {
this.transferQueue = transferQueue;
this.name = name;
this.numberOfMessagesToProduce = numberOfMessagesToProduce;
diff --git a/core-java-concurrency/src/main/java/log4j.properties b/core-java-concurrency/src/main/java/log4j.properties
new file mode 100644
index 0000000000..5fe42d854c
--- /dev/null
+++ b/core-java-concurrency/src/main/java/log4j.properties
@@ -0,0 +1,9 @@
+# Set root logger level to DEBUG and its only appender to A1.
+log4j.rootLogger=DEBUG, A1
+
+# A1 is set to be a ConsoleAppender.
+log4j.appender.A1=org.apache.log4j.ConsoleAppender
+
+# A1 uses PatternLayout.
+log4j.appender.A1.layout=org.apache.log4j.PatternLayout
+log4j.appender.A1.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
diff --git a/core-java-concurrency/src/main/resources/logback.xml b/core-java-concurrency/src/main/resources/logback.xml
new file mode 100644
index 0000000000..ec0dc2469a
--- /dev/null
+++ b/core-java-concurrency/src/main/resources/logback.xml
@@ -0,0 +1,19 @@
+
+
+
+
+ web - %date [%thread] %-5level %logger{36} - %message%n
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/core-java/src/test/java/com/baeldung/completablefuture/CompletableFutureLongRunningUnitTest.java b/core-java-concurrency/src/test/java/com/baeldung/completablefuture/CompletableFutureLongRunningUnitTest.java
similarity index 96%
rename from core-java/src/test/java/com/baeldung/completablefuture/CompletableFutureLongRunningUnitTest.java
rename to core-java-concurrency/src/test/java/com/baeldung/completablefuture/CompletableFutureLongRunningUnitTest.java
index 0a6d94e126..45d2ec68e4 100644
--- a/core-java/src/test/java/com/baeldung/completablefuture/CompletableFutureLongRunningUnitTest.java
+++ b/core-java-concurrency/src/test/java/com/baeldung/completablefuture/CompletableFutureLongRunningUnitTest.java
@@ -4,7 +4,11 @@ import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import java.util.concurrent.*;
+import java.util.concurrent.CancellationException;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.Executors;
+import java.util.concurrent.Future;
import java.util.stream.Collectors;
import java.util.stream.Stream;
diff --git a/core-java/src/test/java/com/baeldung/concurrent/accumulator/LongAccumulatorUnitTest.java b/core-java-concurrency/src/test/java/com/baeldung/concurrent/accumulator/LongAccumulatorUnitTest.java
similarity index 100%
rename from core-java/src/test/java/com/baeldung/concurrent/accumulator/LongAccumulatorUnitTest.java
rename to core-java-concurrency/src/test/java/com/baeldung/concurrent/accumulator/LongAccumulatorUnitTest.java
diff --git a/core-java/src/test/java/com/baeldung/concurrent/adder/LongAdderUnitTest.java b/core-java-concurrency/src/test/java/com/baeldung/concurrent/adder/LongAdderUnitTest.java
similarity index 100%
rename from core-java/src/test/java/com/baeldung/concurrent/adder/LongAdderUnitTest.java
rename to core-java-concurrency/src/test/java/com/baeldung/concurrent/adder/LongAdderUnitTest.java
diff --git a/core-java/src/test/java/com/baeldung/concurrent/atomic/ThreadSafeCounterTest.java b/core-java-concurrency/src/test/java/com/baeldung/concurrent/atomic/ThreadSafeCounterTest.java
similarity index 100%
rename from core-java/src/test/java/com/baeldung/concurrent/atomic/ThreadSafeCounterTest.java
rename to core-java-concurrency/src/test/java/com/baeldung/concurrent/atomic/ThreadSafeCounterTest.java
diff --git a/core-java/src/test/java/com/baeldung/concurrent/atomic/ThreadUnsafeCounterManualTest.java b/core-java-concurrency/src/test/java/com/baeldung/concurrent/atomic/ThreadUnsafeCounterManualTest.java
similarity index 100%
rename from core-java/src/test/java/com/baeldung/concurrent/atomic/ThreadUnsafeCounterManualTest.java
rename to core-java-concurrency/src/test/java/com/baeldung/concurrent/atomic/ThreadUnsafeCounterManualTest.java
diff --git a/core-java-concurrency/src/test/java/com/baeldung/concurrent/callable/FactorialTaskManualTest.java b/core-java-concurrency/src/test/java/com/baeldung/concurrent/callable/FactorialTaskManualTest.java
new file mode 100644
index 0000000000..c55e04af94
--- /dev/null
+++ b/core-java-concurrency/src/test/java/com/baeldung/concurrent/callable/FactorialTaskManualTest.java
@@ -0,0 +1,48 @@
+package com.baeldung.concurrent.callable;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.Future;
+
+import static junit.framework.Assert.assertEquals;
+
+public class FactorialTaskManualTest {
+
+ private ExecutorService executorService;
+
+ @Before
+ public void setup(){
+ executorService = Executors.newSingleThreadExecutor();
+ }
+
+ @Test
+ public void whenTaskSubmitted_ThenFutureResultObtained() throws ExecutionException, InterruptedException {
+ FactorialTask task = new FactorialTask(5);
+ Future future= executorService.submit(task);
+ assertEquals(120,future.get().intValue());
+ }
+
+ @Test(expected = ExecutionException.class)
+ public void whenException_ThenCallableThrowsIt() throws ExecutionException, InterruptedException {
+ FactorialTask task = new FactorialTask(-5);
+ Future future= executorService.submit(task);
+ Integer result=future.get().intValue();
+ }
+
+ @Test
+ public void whenException_ThenCallableDoesntThrowsItIfGetIsNotCalled(){
+ FactorialTask task = new FactorialTask(-5);
+ Future future= executorService.submit(task);
+ assertEquals(false,future.isDone());
+ }
+
+ @After
+ public void cleanup(){
+ executorService.shutdown();
+ }
+}
diff --git a/core-java/src/test/java/com/baeldung/concurrent/copyonwrite/CopyOnWriteArrayListUnitTest.java b/core-java-concurrency/src/test/java/com/baeldung/concurrent/copyonwrite/CopyOnWriteArrayListUnitTest.java
similarity index 100%
rename from core-java/src/test/java/com/baeldung/concurrent/copyonwrite/CopyOnWriteArrayListUnitTest.java
rename to core-java-concurrency/src/test/java/com/baeldung/concurrent/copyonwrite/CopyOnWriteArrayListUnitTest.java
diff --git a/core-java/src/test/java/com/baeldung/concurrent/countdownlatch/CountdownLatchExampleIntegrationTest.java b/core-java-concurrency/src/test/java/com/baeldung/concurrent/countdownlatch/CountdownLatchExampleIntegrationTest.java
similarity index 91%
rename from core-java/src/test/java/com/baeldung/concurrent/countdownlatch/CountdownLatchExampleIntegrationTest.java
rename to core-java-concurrency/src/test/java/com/baeldung/concurrent/countdownlatch/CountdownLatchExampleIntegrationTest.java
index fc343e4cee..d49a8b8590 100644
--- a/core-java/src/test/java/com/baeldung/concurrent/countdownlatch/CountdownLatchExampleIntegrationTest.java
+++ b/core-java-concurrency/src/test/java/com/baeldung/concurrent/countdownlatch/CountdownLatchExampleIntegrationTest.java
@@ -18,7 +18,9 @@ public class CountdownLatchExampleIntegrationTest {
// Given
List outputScraper = Collections.synchronizedList(new ArrayList<>());
CountDownLatch countDownLatch = new CountDownLatch(5);
- List workers = Stream.generate(() -> new Thread(new Worker(outputScraper, countDownLatch))).limit(5).collect(toList());
+ List workers = Stream.generate(() -> new Thread(new Worker(outputScraper, countDownLatch)))
+ .limit(5)
+ .collect(toList());
// When
workers.forEach(Thread::start);
@@ -26,7 +28,6 @@ public class CountdownLatchExampleIntegrationTest {
outputScraper.add("Latch released");
// Then
- outputScraper.forEach(Object::toString);
assertThat(outputScraper).containsExactly("Counted down", "Counted down", "Counted down", "Counted down", "Counted down", "Latch released");
}
@@ -35,7 +36,9 @@ public class CountdownLatchExampleIntegrationTest {
// Given
List outputScraper = Collections.synchronizedList(new ArrayList<>());
CountDownLatch countDownLatch = new CountDownLatch(5);
- List workers = Stream.generate(() -> new Thread(new BrokenWorker(outputScraper, countDownLatch))).limit(5).collect(toList());
+ List workers = Stream.generate(() -> new Thread(new BrokenWorker(outputScraper, countDownLatch)))
+ .limit(5)
+ .collect(toList());
// When
workers.forEach(Thread::start);
@@ -63,7 +66,6 @@ public class CountdownLatchExampleIntegrationTest {
outputScraper.add("Workers complete");
// Then
- outputScraper.forEach(Object::toString);
assertThat(outputScraper).containsExactly("Workers ready", "Counted down", "Counted down", "Counted down", "Counted down", "Counted down", "Workers complete");
}
diff --git a/core-java/src/test/java/com/baeldung/concurrent/delayqueue/DelayQueueIntegrationTest.java b/core-java-concurrency/src/test/java/com/baeldung/concurrent/delayqueue/DelayQueueIntegrationTest.java
similarity index 100%
rename from core-java/src/test/java/com/baeldung/concurrent/delayqueue/DelayQueueIntegrationTest.java
rename to core-java-concurrency/src/test/java/com/baeldung/concurrent/delayqueue/DelayQueueIntegrationTest.java
diff --git a/core-java/src/test/java/com/baeldung/concurrent/future/FactorialSquareCalculatorUnitTest.java b/core-java-concurrency/src/test/java/com/baeldung/concurrent/future/FactorialSquareCalculatorUnitTest.java
similarity index 100%
rename from core-java/src/test/java/com/baeldung/concurrent/future/FactorialSquareCalculatorUnitTest.java
rename to core-java-concurrency/src/test/java/com/baeldung/concurrent/future/FactorialSquareCalculatorUnitTest.java
diff --git a/core-java/src/test/java/com/baeldung/concurrent/future/SquareCalculatorIntegrationTest.java b/core-java-concurrency/src/test/java/com/baeldung/concurrent/future/SquareCalculatorIntegrationTest.java
similarity index 99%
rename from core-java/src/test/java/com/baeldung/concurrent/future/SquareCalculatorIntegrationTest.java
rename to core-java-concurrency/src/test/java/com/baeldung/concurrent/future/SquareCalculatorIntegrationTest.java
index 5f8b05a974..c2513f38c1 100644
--- a/core-java/src/test/java/com/baeldung/concurrent/future/SquareCalculatorIntegrationTest.java
+++ b/core-java-concurrency/src/test/java/com/baeldung/concurrent/future/SquareCalculatorIntegrationTest.java
@@ -22,7 +22,6 @@ public class SquareCalculatorIntegrationTest {
private static final Logger LOG = LoggerFactory.getLogger(SquareCalculatorIntegrationTest.class);
-
@Rule
public TestName name = new TestName();
diff --git a/core-java/src/test/java/com/baeldung/concurrent/locks/SharedObjectWithLockManualTest.java b/core-java-concurrency/src/test/java/com/baeldung/concurrent/locks/SharedObjectWithLockManualTest.java
similarity index 100%
rename from core-java/src/test/java/com/baeldung/concurrent/locks/SharedObjectWithLockManualTest.java
rename to core-java-concurrency/src/test/java/com/baeldung/concurrent/locks/SharedObjectWithLockManualTest.java
diff --git a/core-java/src/test/java/com/baeldung/concurrent/locks/SynchronizedHashMapWithRWLockManualTest.java b/core-java-concurrency/src/test/java/com/baeldung/concurrent/locks/SynchronizedHashMapWithRWLockManualTest.java
similarity index 94%
rename from core-java/src/test/java/com/baeldung/concurrent/locks/SynchronizedHashMapWithRWLockManualTest.java
rename to core-java-concurrency/src/test/java/com/baeldung/concurrent/locks/SynchronizedHashMapWithRWLockManualTest.java
index 3014ae38b2..f3ced219f7 100644
--- a/core-java/src/test/java/com/baeldung/concurrent/locks/SynchronizedHashMapWithRWLockManualTest.java
+++ b/core-java-concurrency/src/test/java/com/baeldung/concurrent/locks/SynchronizedHashMapWithRWLockManualTest.java
@@ -49,9 +49,7 @@ public class SynchronizedHashMapWithRWLockManualTest {
private void executeReaderThreads(SynchronizedHashMapWithRWLock object, int threadCount, ExecutorService service) {
for (int i = 0; i < threadCount; i++)
- service.execute(() -> {
- object.get("key" + threadCount);
- });
+ service.execute(() -> object.get("key" + threadCount));
}
}
diff --git a/core-java/src/test/java/com/baeldung/concurrent/phaser/PhaserUnitTest.java b/core-java-concurrency/src/test/java/com/baeldung/concurrent/phaser/PhaserUnitTest.java
similarity index 100%
rename from core-java/src/test/java/com/baeldung/concurrent/phaser/PhaserUnitTest.java
rename to core-java-concurrency/src/test/java/com/baeldung/concurrent/phaser/PhaserUnitTest.java
diff --git a/core-java/src/test/java/com/baeldung/concurrent/priorityblockingqueue/PriorityBlockingQueueIntegrationTest.java b/core-java-concurrency/src/test/java/com/baeldung/concurrent/priorityblockingqueue/PriorityBlockingQueueIntegrationTest.java
similarity index 100%
rename from core-java/src/test/java/com/baeldung/concurrent/priorityblockingqueue/PriorityBlockingQueueIntegrationTest.java
rename to core-java-concurrency/src/test/java/com/baeldung/concurrent/priorityblockingqueue/PriorityBlockingQueueIntegrationTest.java
diff --git a/core-java/src/test/java/com/baeldung/concurrent/semaphores/SemaphoresManualTest.java b/core-java-concurrency/src/test/java/com/baeldung/concurrent/semaphores/SemaphoresManualTest.java
similarity index 100%
rename from core-java/src/test/java/com/baeldung/concurrent/semaphores/SemaphoresManualTest.java
rename to core-java-concurrency/src/test/java/com/baeldung/concurrent/semaphores/SemaphoresManualTest.java
diff --git a/core-java/src/test/java/com/baeldung/concurrent/skiplist/ConcurrentSkipListSetIntegrationTest.java b/core-java-concurrency/src/test/java/com/baeldung/concurrent/skiplist/ConcurrentSkipListSetIntegrationTest.java
similarity index 100%
rename from core-java/src/test/java/com/baeldung/concurrent/skiplist/ConcurrentSkipListSetIntegrationTest.java
rename to core-java-concurrency/src/test/java/com/baeldung/concurrent/skiplist/ConcurrentSkipListSetIntegrationTest.java
diff --git a/core-java/src/test/java/com/baeldung/concurrent/synchronize/BaeldungSychronizedBlockTest.java b/core-java-concurrency/src/test/java/com/baeldung/concurrent/synchronize/BaeldungSychronizedBlockTest.java
similarity index 100%
rename from core-java/src/test/java/com/baeldung/concurrent/synchronize/BaeldungSychronizedBlockTest.java
rename to core-java-concurrency/src/test/java/com/baeldung/concurrent/synchronize/BaeldungSychronizedBlockTest.java
diff --git a/core-java/src/test/java/com/baeldung/concurrent/synchronize/BaeldungSynchronizeMethodsTest.java b/core-java-concurrency/src/test/java/com/baeldung/concurrent/synchronize/BaeldungSynchronizeMethodsTest.java
similarity index 100%
rename from core-java/src/test/java/com/baeldung/concurrent/synchronize/BaeldungSynchronizeMethodsTest.java
rename to core-java-concurrency/src/test/java/com/baeldung/concurrent/synchronize/BaeldungSynchronizeMethodsTest.java
diff --git a/core-java/src/test/java/com/baeldung/concurrent/volatilekeyword/SharedObjectManualTest.java b/core-java-concurrency/src/test/java/com/baeldung/concurrent/volatilekeyword/SharedObjectManualTest.java
similarity index 100%
rename from core-java/src/test/java/com/baeldung/concurrent/volatilekeyword/SharedObjectManualTest.java
rename to core-java-concurrency/src/test/java/com/baeldung/concurrent/volatilekeyword/SharedObjectManualTest.java
diff --git a/core-java/src/test/java/com/baeldung/java/concurrentmap/ConcurrentMapAggregateStatusManualTest.java b/core-java-concurrency/src/test/java/com/baeldung/java/concurrentmap/ConcurrentMapAggregateStatusManualTest.java
similarity index 100%
rename from core-java/src/test/java/com/baeldung/java/concurrentmap/ConcurrentMapAggregateStatusManualTest.java
rename to core-java-concurrency/src/test/java/com/baeldung/java/concurrentmap/ConcurrentMapAggregateStatusManualTest.java
diff --git a/core-java/src/test/java/com/baeldung/java/concurrentmap/ConcurrentMapNullKeyValueManualTest.java b/core-java-concurrency/src/test/java/com/baeldung/java/concurrentmap/ConcurrentMapNullKeyValueManualTest.java
similarity index 99%
rename from core-java/src/test/java/com/baeldung/java/concurrentmap/ConcurrentMapNullKeyValueManualTest.java
rename to core-java-concurrency/src/test/java/com/baeldung/java/concurrentmap/ConcurrentMapNullKeyValueManualTest.java
index 33e3326427..cbac6e7f4c 100644
--- a/core-java/src/test/java/com/baeldung/java/concurrentmap/ConcurrentMapNullKeyValueManualTest.java
+++ b/core-java-concurrency/src/test/java/com/baeldung/java/concurrentmap/ConcurrentMapNullKeyValueManualTest.java
@@ -12,7 +12,7 @@ import static org.junit.Assert.assertNull;
public class ConcurrentMapNullKeyValueManualTest {
- ConcurrentMap concurrentMap;
+ private ConcurrentMap concurrentMap;
@Before
public void setup() {
diff --git a/core-java/src/test/java/com/baeldung/java/concurrentmap/ConcurrentMapPerformanceManualTest.java b/core-java-concurrency/src/test/java/com/baeldung/java/concurrentmap/ConcurrentMapPerformanceManualTest.java
similarity index 62%
rename from core-java/src/test/java/com/baeldung/java/concurrentmap/ConcurrentMapPerformanceManualTest.java
rename to core-java-concurrency/src/test/java/com/baeldung/java/concurrentmap/ConcurrentMapPerformanceManualTest.java
index 5c1612ca60..3f36d0df5d 100644
--- a/core-java/src/test/java/com/baeldung/java/concurrentmap/ConcurrentMapPerformanceManualTest.java
+++ b/core-java-concurrency/src/test/java/com/baeldung/java/concurrentmap/ConcurrentMapPerformanceManualTest.java
@@ -1,27 +1,31 @@
package com.baeldung.java.concurrentmap;
-import org.junit.Test;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
import java.util.Collections;
import java.util.HashMap;
import java.util.Hashtable;
import java.util.Map;
-import java.util.concurrent.*;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.ThreadLocalRandom;
+import java.util.concurrent.TimeUnit;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
+import org.junit.Test;
public class ConcurrentMapPerformanceManualTest {
@Test
public void givenMaps_whenGetPut500KTimes_thenConcurrentMapFaster() throws Exception {
- Map hashtable = new Hashtable<>();
- Map synchronizedHashMap = Collections.synchronizedMap(new HashMap<>());
- Map concurrentHashMap = new ConcurrentHashMap<>();
+ final Map hashtable = new Hashtable<>();
+ final Map synchronizedHashMap = Collections.synchronizedMap(new HashMap<>());
+ final Map concurrentHashMap = new ConcurrentHashMap<>();
- long hashtableAvgRuntime = timeElapseForGetPut(hashtable);
- long syncHashMapAvgRuntime = timeElapseForGetPut(synchronizedHashMap);
- long concurrentHashMapAvgRuntime = timeElapseForGetPut(concurrentHashMap);
+ final long hashtableAvgRuntime = timeElapseForGetPut(hashtable);
+ final long syncHashMapAvgRuntime = timeElapseForGetPut(synchronizedHashMap);
+ final long concurrentHashMapAvgRuntime = timeElapseForGetPut(concurrentHashMap);
System.out.println(String.format("Hashtable: %s, syncHashMap: %s, ConcurrentHashMap: %s", hashtableAvgRuntime, syncHashMapAvgRuntime, concurrentHashMapAvgRuntime));
@@ -31,13 +35,13 @@ public class ConcurrentMapPerformanceManualTest {
}
private long timeElapseForGetPut(Map map) throws InterruptedException {
- ExecutorService executorService = Executors.newFixedThreadPool(4);
- long startTime = System.nanoTime();
+ final ExecutorService executorService = Executors.newFixedThreadPool(4);
+ final long startTime = System.nanoTime();
for (int i = 0; i < 4; i++) {
executorService.execute(() -> {
for (int j = 0; j < 500_000; j++) {
- int value = ThreadLocalRandom.current().nextInt(10000);
- String key = String.valueOf(value);
+ final int value = ThreadLocalRandom.current().nextInt(10000);
+ final String key = String.valueOf(value);
map.put(key, value);
map.get(key);
}
@@ -56,11 +60,11 @@ public class ConcurrentMapPerformanceManualTest {
return 1;
}
}
- int executeTimes = 5000;
+ final int executeTimes = 5000;
- Map mapOfSameHash = new ConcurrentHashMap<>();
+ final Map mapOfSameHash = new ConcurrentHashMap<>();
ExecutorService executorService = Executors.newFixedThreadPool(2);
- long sameHashStartTime = System.currentTimeMillis();
+ final long sameHashStartTime = System.currentTimeMillis();
for (int i = 0; i < 2; i++) {
executorService.execute(() -> {
for (int j = 0; j < executeTimes; j++) {
@@ -71,10 +75,10 @@ public class ConcurrentMapPerformanceManualTest {
executorService.shutdown();
executorService.awaitTermination(5, TimeUnit.SECONDS);
- long mapOfSameHashDuration = System.currentTimeMillis() - sameHashStartTime;
- Map