From eae4d33d9c73ab2e98c6d28db3dc41c3b5690a21 Mon Sep 17 00:00:00 2001 From: Vartika Nigam <63852792+vnigam2702@users.noreply.github.com> Date: Wed, 16 Nov 2022 08:39:18 +0530 Subject: [PATCH] code for thread creation (#12971) * code for thread creation * code refactored * added code for executor service thread pools * moved the files to a single module Co-authored-by: Vartika_Nigam --- .../threads/create/CustomThread.java | 14 +++++++++++++ .../concurrent/threads/create/TestClass.java | 15 ++++++++++++++ .../create/threadpools/CachedThreadPool.java | 16 +++++++++++++++ .../create/threadpools/FixedThreadPool.java | 17 ++++++++++++++++ .../threadpools/ScheduledThreadPool.java | 14 +++++++++++++ .../create/threadpools/SingleThreadPool.java | 20 +++++++++++++++++++ 6 files changed, 96 insertions(+) create mode 100644 core-java-modules/core-java-concurrency-basic-2/src/main/java/com/baeldung/concurrent/threads/create/CustomThread.java create mode 100644 core-java-modules/core-java-concurrency-basic-2/src/main/java/com/baeldung/concurrent/threads/create/TestClass.java create mode 100644 core-java-modules/core-java-concurrency-basic-2/src/main/java/com/baeldung/concurrent/threads/create/threadpools/CachedThreadPool.java create mode 100644 core-java-modules/core-java-concurrency-basic-2/src/main/java/com/baeldung/concurrent/threads/create/threadpools/FixedThreadPool.java create mode 100644 core-java-modules/core-java-concurrency-basic-2/src/main/java/com/baeldung/concurrent/threads/create/threadpools/ScheduledThreadPool.java create mode 100644 core-java-modules/core-java-concurrency-basic-2/src/main/java/com/baeldung/concurrent/threads/create/threadpools/SingleThreadPool.java diff --git a/core-java-modules/core-java-concurrency-basic-2/src/main/java/com/baeldung/concurrent/threads/create/CustomThread.java b/core-java-modules/core-java-concurrency-basic-2/src/main/java/com/baeldung/concurrent/threads/create/CustomThread.java new file mode 100644 index 0000000000..79e938c50f --- /dev/null +++ b/core-java-modules/core-java-concurrency-basic-2/src/main/java/com/baeldung/concurrent/threads/create/CustomThread.java @@ -0,0 +1,14 @@ +package com.baeldung.concurrent.threads.create; + +public class CustomThread extends Thread{ + + @Override + public void run(){ + System.out.println(Thread.currentThread().getName()+" started"); + } + + public static void main(String[] args){ + CustomThread t1 = new CustomThread(); + t1.start(); + } +} \ No newline at end of file diff --git a/core-java-modules/core-java-concurrency-basic-2/src/main/java/com/baeldung/concurrent/threads/create/TestClass.java b/core-java-modules/core-java-concurrency-basic-2/src/main/java/com/baeldung/concurrent/threads/create/TestClass.java new file mode 100644 index 0000000000..d292e4d24c --- /dev/null +++ b/core-java-modules/core-java-concurrency-basic-2/src/main/java/com/baeldung/concurrent/threads/create/TestClass.java @@ -0,0 +1,15 @@ +package com.baeldung.concurrent.threads.create; + +public class TestClass implements Runnable{ + + @Override + public void run(){ + System.out.println(Thread.currentThread().getName()+" started"); + } + + public static void main(String[] args){ + TestClass testClassRef = new TestClass(); + Thread t1 = new Thread(testClassRef); + t1.start(); + } +} \ No newline at end of file diff --git a/core-java-modules/core-java-concurrency-basic-2/src/main/java/com/baeldung/concurrent/threads/create/threadpools/CachedThreadPool.java b/core-java-modules/core-java-concurrency-basic-2/src/main/java/com/baeldung/concurrent/threads/create/threadpools/CachedThreadPool.java new file mode 100644 index 0000000000..af60f4e9e8 --- /dev/null +++ b/core-java-modules/core-java-concurrency-basic-2/src/main/java/com/baeldung/concurrent/threads/create/threadpools/CachedThreadPool.java @@ -0,0 +1,16 @@ +package com.baeldung.concurrent.threads.create.threadpools; + +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + +public class CachedThreadPool { + public static void main(String[] args){ + ExecutorService executorService = Executors.newCachedThreadPool(); + executorService.submit(()->{ + System.out.println("submitted a runnable task to cached thread pool"); + System.out.println(Thread.currentThread().getName()+" from pool is executing the task"); + }); + + executorService.shutdown(); + } +} \ No newline at end of file diff --git a/core-java-modules/core-java-concurrency-basic-2/src/main/java/com/baeldung/concurrent/threads/create/threadpools/FixedThreadPool.java b/core-java-modules/core-java-concurrency-basic-2/src/main/java/com/baeldung/concurrent/threads/create/threadpools/FixedThreadPool.java new file mode 100644 index 0000000000..ad3acb45d5 --- /dev/null +++ b/core-java-modules/core-java-concurrency-basic-2/src/main/java/com/baeldung/concurrent/threads/create/threadpools/FixedThreadPool.java @@ -0,0 +1,17 @@ +package com.baeldung.concurrent.threads.create.threadpools; + +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + +public class FixedThreadPool{ + + public static void main(String[] args){ + ExecutorService executorService = Executors.newFixedThreadPool(5); + executorService.submit(()->{ + System.out.println("submitted a runnable task to fixed thread pool"); + System.out.println(Thread.currentThread().getName()+" from pool is executing the task"); + }); + + executorService.shutdown(); + } +} \ No newline at end of file diff --git a/core-java-modules/core-java-concurrency-basic-2/src/main/java/com/baeldung/concurrent/threads/create/threadpools/ScheduledThreadPool.java b/core-java-modules/core-java-concurrency-basic-2/src/main/java/com/baeldung/concurrent/threads/create/threadpools/ScheduledThreadPool.java new file mode 100644 index 0000000000..084835041f --- /dev/null +++ b/core-java-modules/core-java-concurrency-basic-2/src/main/java/com/baeldung/concurrent/threads/create/threadpools/ScheduledThreadPool.java @@ -0,0 +1,14 @@ +package com.baeldung.concurrent.threads.create.threadpools; + +import java.util.concurrent.Executors; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.TimeUnit; + +public class ScheduledThreadPool{ + public static void main(String[] args){ + ScheduledExecutorService executorService = Executors.newScheduledThreadPool(3); + executorService.schedule(()->System.out.println("executing scheduled runnable task"), 5, TimeUnit.SECONDS); + + executorService.shutdown(); + } +} \ No newline at end of file diff --git a/core-java-modules/core-java-concurrency-basic-2/src/main/java/com/baeldung/concurrent/threads/create/threadpools/SingleThreadPool.java b/core-java-modules/core-java-concurrency-basic-2/src/main/java/com/baeldung/concurrent/threads/create/threadpools/SingleThreadPool.java new file mode 100644 index 0000000000..5a91eadb39 --- /dev/null +++ b/core-java-modules/core-java-concurrency-basic-2/src/main/java/com/baeldung/concurrent/threads/create/threadpools/SingleThreadPool.java @@ -0,0 +1,20 @@ +package com.baeldung.concurrent.threads.create.threadpools; + +import java.util.concurrent.ExecutionException; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.Future; + +public class SingleThreadPool{ + public static void main(String[] args){ + ExecutorService executorService = Executors.newSingleThreadExecutor(); + try{ + Future result = executorService.submit(()-> "callable task executed"); + System.out.println(result.get()); + }catch(InterruptedException | ExecutionException e){ + e.printStackTrace(); + } + + executorService.shutdown(); + } +} \ No newline at end of file