diff --git a/core-java-modules/core-java-concurrency-simple/src/test/java/com/baeldung/concurrent/completablefuture/CompletableFutureLongRunningUnitTest.java b/core-java-modules/core-java-concurrency-basic-3/src/test/java/com/baeldung/concurrent/completablefuture/CompletableFutureLongRunningUnitTest.java
similarity index 100%
rename from core-java-modules/core-java-concurrency-simple/src/test/java/com/baeldung/concurrent/completablefuture/CompletableFutureLongRunningUnitTest.java
rename to core-java-modules/core-java-concurrency-basic-3/src/test/java/com/baeldung/concurrent/completablefuture/CompletableFutureLongRunningUnitTest.java
index 06baec33d18b..6ca1f332efd9 100644
--- a/core-java-modules/core-java-concurrency-simple/src/test/java/com/baeldung/concurrent/completablefuture/CompletableFutureLongRunningUnitTest.java
+++ b/core-java-modules/core-java-concurrency-basic-3/src/test/java/com/baeldung/concurrent/completablefuture/CompletableFutureLongRunningUnitTest.java
@@ -1,6 +1,9 @@
package com.baeldung.concurrent.completablefuture;
-import org.junit.Test;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertTrue;
import java.util.concurrent.CancellationException;
import java.util.concurrent.CompletableFuture;
@@ -12,10 +15,7 @@
import java.util.stream.Collectors;
import java.util.stream.Stream;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertSame;
-import static org.junit.Assert.assertTrue;
+import org.junit.Test;
public class CompletableFutureLongRunningUnitTest {
diff --git a/core-java-modules/core-java-concurrency-simple/src/main/java/com/baeldung/concurrent/synchronize/SynchronizedBlocks.java b/core-java-modules/core-java-concurrency-basic-4/src/main/java/com/baeldung/concurrent/synchronize/SynchronizedBlocks.java
similarity index 100%
rename from core-java-modules/core-java-concurrency-simple/src/main/java/com/baeldung/concurrent/synchronize/SynchronizedBlocks.java
rename to core-java-modules/core-java-concurrency-basic-4/src/main/java/com/baeldung/concurrent/synchronize/SynchronizedBlocks.java
diff --git a/core-java-modules/core-java-concurrency-simple/src/main/java/com/baeldung/concurrent/synchronize/SynchronizedMethods.java b/core-java-modules/core-java-concurrency-basic-4/src/main/java/com/baeldung/concurrent/synchronize/SynchronizedMethods.java
similarity index 100%
rename from core-java-modules/core-java-concurrency-simple/src/main/java/com/baeldung/concurrent/synchronize/SynchronizedMethods.java
rename to core-java-modules/core-java-concurrency-basic-4/src/main/java/com/baeldung/concurrent/synchronize/SynchronizedMethods.java
diff --git a/core-java-modules/core-java-concurrency-simple/src/main/java/com/baeldung/concurrent/volatilekeyword/SharedObject.java b/core-java-modules/core-java-concurrency-basic-4/src/main/java/com/baeldung/concurrent/volatilekeyword/SharedObject.java
similarity index 100%
rename from core-java-modules/core-java-concurrency-simple/src/main/java/com/baeldung/concurrent/volatilekeyword/SharedObject.java
rename to core-java-modules/core-java-concurrency-basic-4/src/main/java/com/baeldung/concurrent/volatilekeyword/SharedObject.java
diff --git a/core-java-modules/core-java-concurrency-simple/src/main/java/com/baeldung/concurrent/volatilekeyword/TaskRunner.java b/core-java-modules/core-java-concurrency-basic-4/src/main/java/com/baeldung/concurrent/volatilekeyword/TaskRunner.java
similarity index 100%
rename from core-java-modules/core-java-concurrency-simple/src/main/java/com/baeldung/concurrent/volatilekeyword/TaskRunner.java
rename to core-java-modules/core-java-concurrency-basic-4/src/main/java/com/baeldung/concurrent/volatilekeyword/TaskRunner.java
diff --git a/core-java-modules/core-java-concurrency-simple/src/test/java/com/baeldung/concurrent/synchronize/SynchronizedBlocksUnitTest.java b/core-java-modules/core-java-concurrency-basic-4/src/test/java/com/baeldung/concurrent/synchronize/SynchronizedBlocksUnitTest.java
similarity index 100%
rename from core-java-modules/core-java-concurrency-simple/src/test/java/com/baeldung/concurrent/synchronize/SynchronizedBlocksUnitTest.java
rename to core-java-modules/core-java-concurrency-basic-4/src/test/java/com/baeldung/concurrent/synchronize/SynchronizedBlocksUnitTest.java
index 0e7b0ef7f7ae..e149456802b3 100644
--- a/core-java-modules/core-java-concurrency-simple/src/test/java/com/baeldung/concurrent/synchronize/SynchronizedBlocksUnitTest.java
+++ b/core-java-modules/core-java-concurrency-basic-4/src/test/java/com/baeldung/concurrent/synchronize/SynchronizedBlocksUnitTest.java
@@ -1,13 +1,13 @@
package com.baeldung.concurrent.synchronize;
-import org.junit.Test;
+import static org.junit.Assert.assertEquals;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
import java.util.stream.IntStream;
-import static org.junit.Assert.assertEquals;
+import org.junit.Test;
public class SynchronizedBlocksUnitTest {
diff --git a/core-java-modules/core-java-concurrency-simple/src/test/java/com/baeldung/concurrent/synchronize/SynchronizedMethodsUnitTest.java b/core-java-modules/core-java-concurrency-basic-4/src/test/java/com/baeldung/concurrent/synchronize/SynchronizedMethodsUnitTest.java
similarity index 100%
rename from core-java-modules/core-java-concurrency-simple/src/test/java/com/baeldung/concurrent/synchronize/SynchronizedMethodsUnitTest.java
rename to core-java-modules/core-java-concurrency-basic-4/src/test/java/com/baeldung/concurrent/synchronize/SynchronizedMethodsUnitTest.java
index 1ccd18e70958..a886a7fbd311 100644
--- a/core-java-modules/core-java-concurrency-simple/src/test/java/com/baeldung/concurrent/synchronize/SynchronizedMethodsUnitTest.java
+++ b/core-java-modules/core-java-concurrency-basic-4/src/test/java/com/baeldung/concurrent/synchronize/SynchronizedMethodsUnitTest.java
@@ -1,14 +1,14 @@
package com.baeldung.concurrent.synchronize;
-import org.junit.Ignore;
-import org.junit.Test;
+import static org.junit.Assert.assertEquals;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
import java.util.stream.IntStream;
-import static org.junit.Assert.assertEquals;
+import org.junit.Ignore;
+import org.junit.Test;
public class SynchronizedMethodsUnitTest {
diff --git a/core-java-modules/core-java-concurrency-simple/src/test/java/com/baeldung/concurrent/volatilekeyword/SharedObjectManualTest.java b/core-java-modules/core-java-concurrency-basic-4/src/test/java/com/baeldung/concurrent/volatilekeyword/SharedObjectManualTest.java
similarity index 97%
rename from core-java-modules/core-java-concurrency-simple/src/test/java/com/baeldung/concurrent/volatilekeyword/SharedObjectManualTest.java
rename to core-java-modules/core-java-concurrency-basic-4/src/test/java/com/baeldung/concurrent/volatilekeyword/SharedObjectManualTest.java
index 45517cefd7da..436b03daba87 100644
--- a/core-java-modules/core-java-concurrency-simple/src/test/java/com/baeldung/concurrent/volatilekeyword/SharedObjectManualTest.java
+++ b/core-java-modules/core-java-concurrency-basic-4/src/test/java/com/baeldung/concurrent/volatilekeyword/SharedObjectManualTest.java
@@ -1,8 +1,8 @@
package com.baeldung.concurrent.volatilekeyword;
-import org.junit.Test;
+import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.*;
+import org.junit.Test;
public class SharedObjectManualTest {
diff --git a/core-java-modules/core-java-concurrency-basic-5/pom.xml b/core-java-modules/core-java-concurrency-basic-5/pom.xml
new file mode 100644
index 000000000000..dda8d309a0b4
--- /dev/null
+++ b/core-java-modules/core-java-concurrency-basic-5/pom.xml
@@ -0,0 +1,29 @@
+
+
+ 4.0.0
+ core-java-concurrency-basic-5
+ jar
+ core-java-concurrency-basic-5
+
+
+ com.baeldung.core-java-modules
+ core-java-modules
+ 0.0.1-SNAPSHOT
+
+
+
+
+ org.wiremock
+ wiremock
+ ${wiremock.version}
+ test
+
+
+
+
+ 3.1.0
+
+
+
\ No newline at end of file
diff --git a/core-java-modules/core-java-concurrency-basic-5/src/main/resources/logback.xml b/core-java-modules/core-java-concurrency-basic-5/src/main/resources/logback.xml
new file mode 100644
index 000000000000..7d900d8ea884
--- /dev/null
+++ b/core-java-modules/core-java-concurrency-basic-5/src/main/resources/logback.xml
@@ -0,0 +1,13 @@
+
+
+
+
+ %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/core-java-modules/core-java-concurrency-simple/src/test/java/com/baeldung/concurrent/completablefuture/CompletableFutureTimeoutUnitTest.java b/core-java-modules/core-java-concurrency-basic-5/src/test/java/com/baeldung/concurrent/completablefuture/CompletableFutureTimeoutUnitTest.java
similarity index 96%
rename from core-java-modules/core-java-concurrency-simple/src/test/java/com/baeldung/concurrent/completablefuture/CompletableFutureTimeoutUnitTest.java
rename to core-java-modules/core-java-concurrency-basic-5/src/test/java/com/baeldung/concurrent/completablefuture/CompletableFutureTimeoutUnitTest.java
index 54589ca1708d..5cb6048eff00 100644
--- a/core-java-modules/core-java-concurrency-simple/src/test/java/com/baeldung/concurrent/completablefuture/CompletableFutureTimeoutUnitTest.java
+++ b/core-java-modules/core-java-concurrency-basic-5/src/test/java/com/baeldung/concurrent/completablefuture/CompletableFutureTimeoutUnitTest.java
@@ -1,23 +1,28 @@
package com.baeldung.concurrent.completablefuture;
-import com.github.tomakehurst.wiremock.WireMockServer;
-import com.github.tomakehurst.wiremock.client.WireMock;
-import org.junit.jupiter.api.AfterAll;
-import org.junit.jupiter.api.BeforeAll;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.TestInstance;
+import static com.github.tomakehurst.wiremock.client.WireMock.*;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
import java.io.BufferedReader;
-import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URI;
import java.net.URL;
-import java.util.concurrent.*;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.Executors;
+import java.util.concurrent.ScheduledExecutorService;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
-import static com.github.tomakehurst.wiremock.client.WireMock.*;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertThrows;
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.TestInstance;
+
+import com.github.tomakehurst.wiremock.WireMockServer;
+import com.github.tomakehurst.wiremock.client.WireMock;
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
class CompletableFutureTimeoutUnitTest {
diff --git a/core-java-modules/core-java-concurrency-simple/src/test/java/com/baeldung/concurrent/threadjoin/ThreadJoinUnitTest.java b/core-java-modules/core-java-concurrency-basic-5/src/test/java/com/baeldung/concurrent/threadjoin/ThreadJoinUnitTest.java
similarity index 100%
rename from core-java-modules/core-java-concurrency-simple/src/test/java/com/baeldung/concurrent/threadjoin/ThreadJoinUnitTest.java
rename to core-java-modules/core-java-concurrency-basic-5/src/test/java/com/baeldung/concurrent/threadjoin/ThreadJoinUnitTest.java
index 10d566de967d..7ca48f1f4331 100644
--- a/core-java-modules/core-java-concurrency-simple/src/test/java/com/baeldung/concurrent/threadjoin/ThreadJoinUnitTest.java
+++ b/core-java-modules/core-java-concurrency-basic-5/src/test/java/com/baeldung/concurrent/threadjoin/ThreadJoinUnitTest.java
@@ -1,13 +1,13 @@
package com.baeldung.concurrent.threadjoin;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
import org.junit.Ignore;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-
/**
* Demonstrates Thread.join behavior.
*
diff --git a/core-java-modules/core-java-concurrency-simple/src/main/java/com/baeldung/concurrent/executorservice/CallableTask.java b/core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/executorservice/CallableTask.java
similarity index 100%
rename from core-java-modules/core-java-concurrency-simple/src/main/java/com/baeldung/concurrent/executorservice/CallableTask.java
rename to core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/executorservice/CallableTask.java
diff --git a/core-java-modules/core-java-concurrency-simple/src/main/java/com/baeldung/concurrent/executorservice/ScheduledExecutorServiceDemo.java b/core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/executorservice/ScheduledExecutorServiceDemo.java
similarity index 100%
rename from core-java-modules/core-java-concurrency-simple/src/main/java/com/baeldung/concurrent/executorservice/ScheduledExecutorServiceDemo.java
rename to core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/executorservice/ScheduledExecutorServiceDemo.java
diff --git a/core-java-modules/core-java-concurrency-simple/src/main/java/com/baeldung/concurrent/executorservice/Task.java b/core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/executorservice/Task.java
similarity index 100%
rename from core-java-modules/core-java-concurrency-simple/src/main/java/com/baeldung/concurrent/executorservice/Task.java
rename to core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/executorservice/Task.java
diff --git a/core-java-modules/core-java-concurrency-simple/src/test/java/com/baeldung/concurrent/executorservice/Java8ExecutorServiceIntegrationTest.java b/core-java-modules/core-java-concurrency-basic/src/test/java/com/baeldung/concurrent/executorservice/Java8ExecutorServiceIntegrationTest.java
similarity index 100%
rename from core-java-modules/core-java-concurrency-simple/src/test/java/com/baeldung/concurrent/executorservice/Java8ExecutorServiceIntegrationTest.java
rename to core-java-modules/core-java-concurrency-basic/src/test/java/com/baeldung/concurrent/executorservice/Java8ExecutorServiceIntegrationTest.java
diff --git a/core-java-modules/core-java-concurrency-simple/pom.xml b/core-java-modules/core-java-concurrency-simple/pom.xml
index b36e16a6678f..531b1703da30 100644
--- a/core-java-modules/core-java-concurrency-simple/pom.xml
+++ b/core-java-modules/core-java-concurrency-simple/pom.xml
@@ -12,15 +12,6 @@
0.0.1-SNAPSHOT
-
-
- org.wiremock
- wiremock
- 3.1.0
- test
-
-
-
core-java-concurrency-simple
diff --git a/core-java-modules/pom.xml b/core-java-modules/pom.xml
index b4a6b3a5dfc7..a87def578aa1 100644
--- a/core-java-modules/pom.xml
+++ b/core-java-modules/pom.xml
@@ -121,6 +121,7 @@
core-java-concurrency-basic-2
core-java-concurrency-basic-3
core-java-concurrency-basic-4
+ core-java-concurrency-basic-5
core-java-concurrency-collections
core-java-concurrency-collections-2
core-java-console