From a785787255c5fc9e26b33b4e6e9e7f84475edb72 Mon Sep 17 00:00:00 2001 From: Clost Date: Mon, 15 May 2023 18:21:08 +0100 Subject: [PATCH 01/13] Create thread --- src/main/java/com/jenkov/java/concurrency/thread | 1 + 1 file changed, 1 insertion(+) create mode 100644 src/main/java/com/jenkov/java/concurrency/thread diff --git a/src/main/java/com/jenkov/java/concurrency/thread b/src/main/java/com/jenkov/java/concurrency/thread new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/src/main/java/com/jenkov/java/concurrency/thread @@ -0,0 +1 @@ + From 8559ed8e91481145b7d7f89bde9714fa9ef8b656 Mon Sep 17 00:00:00 2001 From: Clost Date: Mon, 15 May 2023 18:24:48 +0100 Subject: [PATCH 02/13] Delete thread --- src/main/java/com/jenkov/java/concurrency/thread | 1 - 1 file changed, 1 deletion(-) delete mode 100644 src/main/java/com/jenkov/java/concurrency/thread diff --git a/src/main/java/com/jenkov/java/concurrency/thread b/src/main/java/com/jenkov/java/concurrency/thread deleted file mode 100644 index 8b13789..0000000 --- a/src/main/java/com/jenkov/java/concurrency/thread +++ /dev/null @@ -1 +0,0 @@ - From 85b44bd0a12968ca395835303bd1d7f9c6ead980 Mon Sep 17 00:00:00 2001 From: Clost Date: Mon, 15 May 2023 18:25:10 +0100 Subject: [PATCH 03/13] Add files via upload --- .../concurrency/thread/ThreadExample.java | 9 ++++ .../concurrency/thread/ThreadExample10.java | 31 ++++++++++++ .../concurrency/thread/ThreadExample2.java | 15 ++++++ .../concurrency/thread/ThreadExample3.java | 16 ++++++ .../concurrency/thread/ThreadExample4.java | 16 ++++++ .../concurrency/thread/ThreadExample5.java | 12 +++++ .../concurrency/thread/ThreadExample6.java | 14 ++++++ .../concurrency/thread/ThreadExample7.java | 19 +++++++ .../concurrency/thread/ThreadExample8.java | 50 +++++++++++++++++++ .../concurrency/thread/ThreadExample9.java | 26 ++++++++++ 10 files changed, 208 insertions(+) create mode 100644 src/main/java/com/jenkov/java/concurrency/thread/ThreadExample.java create mode 100644 src/main/java/com/jenkov/java/concurrency/thread/ThreadExample10.java create mode 100644 src/main/java/com/jenkov/java/concurrency/thread/ThreadExample2.java create mode 100644 src/main/java/com/jenkov/java/concurrency/thread/ThreadExample3.java create mode 100644 src/main/java/com/jenkov/java/concurrency/thread/ThreadExample4.java create mode 100644 src/main/java/com/jenkov/java/concurrency/thread/ThreadExample5.java create mode 100644 src/main/java/com/jenkov/java/concurrency/thread/ThreadExample6.java create mode 100644 src/main/java/com/jenkov/java/concurrency/thread/ThreadExample7.java create mode 100644 src/main/java/com/jenkov/java/concurrency/thread/ThreadExample8.java create mode 100644 src/main/java/com/jenkov/java/concurrency/thread/ThreadExample9.java diff --git a/src/main/java/com/jenkov/java/concurrency/thread/ThreadExample.java b/src/main/java/com/jenkov/java/concurrency/thread/ThreadExample.java new file mode 100644 index 0000000..feb4f74 --- /dev/null +++ b/src/main/java/com/jenkov/java/concurrency/thread/ThreadExample.java @@ -0,0 +1,9 @@ +package thread; + +public class ThreadExample { + public static void main(String[] args) { + Thread thread = new Thread(); + System.out.println(thread.getName());//Thread-0 + thread.start(); + } +} diff --git a/src/main/java/com/jenkov/java/concurrency/thread/ThreadExample10.java b/src/main/java/com/jenkov/java/concurrency/thread/ThreadExample10.java new file mode 100644 index 0000000..1b1b508 --- /dev/null +++ b/src/main/java/com/jenkov/java/concurrency/thread/ThreadExample10.java @@ -0,0 +1,31 @@ +package thread; + +public class ThreadExample10 { + public static void main(String[] args) { + Runnable runnable = () ->{ + for (int i = 0; i < 5; i++) { + sleep(1000); + System.out.println("Running"); + } + }; + + Thread thread = new Thread( runnable ); + thread.setDaemon(true); + thread.start(); + +// try{ +// thread.join(); +// } catch (InterruptedException e){ +// e.printStackTrace(); +// } + } + + + public static void sleep(long millis){ + try{ + Thread.sleep(millis); + } catch (InterruptedException e){ + e.printStackTrace(); + } + } +} diff --git a/src/main/java/com/jenkov/java/concurrency/thread/ThreadExample2.java b/src/main/java/com/jenkov/java/concurrency/thread/ThreadExample2.java new file mode 100644 index 0000000..cfbd2db --- /dev/null +++ b/src/main/java/com/jenkov/java/concurrency/thread/ThreadExample2.java @@ -0,0 +1,15 @@ +package thread; + +public class ThreadExample2 { + public static class MyThread extends Thread{ + public void run(){ + System.out.println("MyThread running"); + System.out.println("MyThread finished"); + } + } + + public static void main(String[] args) { + MyThread myThread = new MyThread(); + myThread.start(); + } +} \ No newline at end of file diff --git a/src/main/java/com/jenkov/java/concurrency/thread/ThreadExample3.java b/src/main/java/com/jenkov/java/concurrency/thread/ThreadExample3.java new file mode 100644 index 0000000..43d3c83 --- /dev/null +++ b/src/main/java/com/jenkov/java/concurrency/thread/ThreadExample3.java @@ -0,0 +1,16 @@ +package thread; + +public class ThreadExample3 { + public static class MyRunnable implements Runnable{ + public void run(){ + System.out.println("MyRunnable running"); + System.out.println("MyRunnable finished"); + } + } + + public static void main(String[] args) { + Thread thread = new Thread( new MyRunnable() ); + thread.start(); + } + +} diff --git a/src/main/java/com/jenkov/java/concurrency/thread/ThreadExample4.java b/src/main/java/com/jenkov/java/concurrency/thread/ThreadExample4.java new file mode 100644 index 0000000..e41bcf8 --- /dev/null +++ b/src/main/java/com/jenkov/java/concurrency/thread/ThreadExample4.java @@ -0,0 +1,16 @@ +package thread; + +public class ThreadExample4 { + + public static void main(String[] args) { + Runnable runnable = new Runnable() { + @Override + public void run() { + System.out.println("Runnable running"); + System.out.println("Runnable finished"); + } + }; + Thread thread = new Thread( runnable ); + thread.start(); + } +} diff --git a/src/main/java/com/jenkov/java/concurrency/thread/ThreadExample5.java b/src/main/java/com/jenkov/java/concurrency/thread/ThreadExample5.java new file mode 100644 index 0000000..773bd1c --- /dev/null +++ b/src/main/java/com/jenkov/java/concurrency/thread/ThreadExample5.java @@ -0,0 +1,12 @@ +package thread; + +public class ThreadExample5 { + public static void main(String[] args) { + Runnable runnable = () ->{ + System.out.println("Lambada running"); + System.out.println("Lambada finished"); + }; + Thread thread = new Thread( runnable ); + thread.start(); + } +} diff --git a/src/main/java/com/jenkov/java/concurrency/thread/ThreadExample6.java b/src/main/java/com/jenkov/java/concurrency/thread/ThreadExample6.java new file mode 100644 index 0000000..ac97c95 --- /dev/null +++ b/src/main/java/com/jenkov/java/concurrency/thread/ThreadExample6.java @@ -0,0 +1,14 @@ +package thread; + +public class ThreadExample6 { + public static void main(String[] args) { + Runnable runnable = () -> { + String threadName = Thread.currentThread().getName(); + System.out.println(threadName + " running"); + }; + Thread thread = new Thread( runnable, "The Thread1"); + thread.start(); + Thread thread2 = new Thread( runnable, "The Thread2"); + thread2.start(); + } +} diff --git a/src/main/java/com/jenkov/java/concurrency/thread/ThreadExample7.java b/src/main/java/com/jenkov/java/concurrency/thread/ThreadExample7.java new file mode 100644 index 0000000..d5cc66b --- /dev/null +++ b/src/main/java/com/jenkov/java/concurrency/thread/ThreadExample7.java @@ -0,0 +1,19 @@ +package thread; + +public class ThreadExample7 { + public static void main(String[] args) { + Runnable runnable = () -> { + String threadName = Thread.currentThread().getName(); + System.out.println(threadName = " running"); + + try{ + Thread.sleep(2000); + } catch (InterruptedException e){ + e.printStackTrace(); + } + System.out.println(threadName + " finished"); + }; + Thread thread = new Thread( runnable, "The Thread"); + thread.start(); + } +} diff --git a/src/main/java/com/jenkov/java/concurrency/thread/ThreadExample8.java b/src/main/java/com/jenkov/java/concurrency/thread/ThreadExample8.java new file mode 100644 index 0000000..f9f19c3 --- /dev/null +++ b/src/main/java/com/jenkov/java/concurrency/thread/ThreadExample8.java @@ -0,0 +1,50 @@ +package thread; + +public class ThreadExample8 { + public static class StoppableRunnable implements Runnable{ + private boolean stopRequested = false; + + public synchronized void requestStop(){ + this.stopRequested = true; + } + + public synchronized boolean isStopRequested(){ + return this.stopRequested; + } + + private void sleep(long millis){ + try { + Thread.sleep(millis); + } catch( InterruptedException e) { + e.printStackTrace(); + } + } + + @Override + public void run() { + System.out.println("StoppableRunnable Running"); + while ( !isStopRequested()){ + sleep(1000); + System.out.println("..."); + } + System.out.println("StoppableRunnable Stopped"); + } + } + + public static void main(String[] args) { + StoppableRunnable stoppableRunnable = new StoppableRunnable(); + Thread thread = new Thread( stoppableRunnable); + thread.start(); + + try{ + Thread.sleep(5000);//main thread + } catch (InterruptedException e){ + e.printStackTrace(); + } + + System.out.println("requesting stop"); + stoppableRunnable.requestStop(); + System.out.println("stop requested"); + + } +} diff --git a/src/main/java/com/jenkov/java/concurrency/thread/ThreadExample9.java b/src/main/java/com/jenkov/java/concurrency/thread/ThreadExample9.java new file mode 100644 index 0000000..6c15ed4 --- /dev/null +++ b/src/main/java/com/jenkov/java/concurrency/thread/ThreadExample9.java @@ -0,0 +1,26 @@ +package thread; + +public class ThreadExample9 { + public static void main(String[] args) { + Runnable runnable = () -> { + while(true){ + sleep(1000); + System.out.println("Running"); + } + }; + + Thread thread = new Thread( runnable ); + thread.setDaemon(true);//set before start + thread.start(); + sleep(3100); + System.out.println("3s passed"); + } + + public static void sleep(long millis){ + try{ + Thread.sleep(millis); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } +} From e950a45419e1b38935551005451c83ebc21549c1 Mon Sep 17 00:00:00 2001 From: Clost Date: Mon, 15 May 2023 18:30:27 +0100 Subject: [PATCH 04/13] Update ThreadExample.java rename package --- .../java/com/jenkov/java/concurrency/thread/ThreadExample.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/jenkov/java/concurrency/thread/ThreadExample.java b/src/main/java/com/jenkov/java/concurrency/thread/ThreadExample.java index feb4f74..2d15f18 100644 --- a/src/main/java/com/jenkov/java/concurrency/thread/ThreadExample.java +++ b/src/main/java/com/jenkov/java/concurrency/thread/ThreadExample.java @@ -1,4 +1,4 @@ -package thread; +package com.jenkov.java.concurrency.thread; public class ThreadExample { public static void main(String[] args) { From da89b14f075165b4086506c22d47c851f3120073 Mon Sep 17 00:00:00 2001 From: Clost Date: Mon, 15 May 2023 18:30:40 +0100 Subject: [PATCH 05/13] Update ThreadExample10.java --- .../com/jenkov/java/concurrency/thread/ThreadExample10.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/jenkov/java/concurrency/thread/ThreadExample10.java b/src/main/java/com/jenkov/java/concurrency/thread/ThreadExample10.java index 1b1b508..6b3a78f 100644 --- a/src/main/java/com/jenkov/java/concurrency/thread/ThreadExample10.java +++ b/src/main/java/com/jenkov/java/concurrency/thread/ThreadExample10.java @@ -1,4 +1,4 @@ -package thread; +package com.jenkov.java.concurrency.thread; public class ThreadExample10 { public static void main(String[] args) { From e650c27ae553c2f5d22a9c76d6a3a4339561241e Mon Sep 17 00:00:00 2001 From: Clost Date: Mon, 15 May 2023 18:30:52 +0100 Subject: [PATCH 06/13] Update ThreadExample2.java --- .../com/jenkov/java/concurrency/thread/ThreadExample2.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/jenkov/java/concurrency/thread/ThreadExample2.java b/src/main/java/com/jenkov/java/concurrency/thread/ThreadExample2.java index cfbd2db..4722ca9 100644 --- a/src/main/java/com/jenkov/java/concurrency/thread/ThreadExample2.java +++ b/src/main/java/com/jenkov/java/concurrency/thread/ThreadExample2.java @@ -1,4 +1,4 @@ -package thread; +package com.jenkov.java.concurrency.thread; public class ThreadExample2 { public static class MyThread extends Thread{ @@ -12,4 +12,4 @@ public static void main(String[] args) { MyThread myThread = new MyThread(); myThread.start(); } -} \ No newline at end of file +} From e94c3185ebcb25d7a85e9ff3a95cd75ec2d192c6 Mon Sep 17 00:00:00 2001 From: Clost Date: Mon, 15 May 2023 18:31:10 +0100 Subject: [PATCH 07/13] Update ThreadExample3.java --- .../java/com/jenkov/java/concurrency/thread/ThreadExample3.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/jenkov/java/concurrency/thread/ThreadExample3.java b/src/main/java/com/jenkov/java/concurrency/thread/ThreadExample3.java index 43d3c83..9008dfe 100644 --- a/src/main/java/com/jenkov/java/concurrency/thread/ThreadExample3.java +++ b/src/main/java/com/jenkov/java/concurrency/thread/ThreadExample3.java @@ -1,4 +1,4 @@ -package thread; +package com.jenkov.java.concurrency.thread; public class ThreadExample3 { public static class MyRunnable implements Runnable{ From b00da78853bb4b6c0d14de2369ef9106845ef840 Mon Sep 17 00:00:00 2001 From: Clost Date: Mon, 15 May 2023 18:31:34 +0100 Subject: [PATCH 08/13] Update ThreadExample4.java --- .../java/com/jenkov/java/concurrency/thread/ThreadExample4.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/jenkov/java/concurrency/thread/ThreadExample4.java b/src/main/java/com/jenkov/java/concurrency/thread/ThreadExample4.java index e41bcf8..c1592f7 100644 --- a/src/main/java/com/jenkov/java/concurrency/thread/ThreadExample4.java +++ b/src/main/java/com/jenkov/java/concurrency/thread/ThreadExample4.java @@ -1,4 +1,4 @@ -package thread; +package com.jenkov.java.concurrency.thread; public class ThreadExample4 { From aba0280f974384c0e83bece8345d838c624b01ab Mon Sep 17 00:00:00 2001 From: Clost Date: Mon, 15 May 2023 18:31:48 +0100 Subject: [PATCH 09/13] Update ThreadExample5.java --- .../java/com/jenkov/java/concurrency/thread/ThreadExample5.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/jenkov/java/concurrency/thread/ThreadExample5.java b/src/main/java/com/jenkov/java/concurrency/thread/ThreadExample5.java index 773bd1c..3e7a15a 100644 --- a/src/main/java/com/jenkov/java/concurrency/thread/ThreadExample5.java +++ b/src/main/java/com/jenkov/java/concurrency/thread/ThreadExample5.java @@ -1,4 +1,4 @@ -package thread; +package com.jenkov.java.concurrency.thread; public class ThreadExample5 { public static void main(String[] args) { From 00ebea62c3527ae262418e4cf80c5ae9ef520e4c Mon Sep 17 00:00:00 2001 From: Clost Date: Mon, 15 May 2023 18:32:03 +0100 Subject: [PATCH 10/13] Update ThreadExample6.java --- .../java/com/jenkov/java/concurrency/thread/ThreadExample6.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/jenkov/java/concurrency/thread/ThreadExample6.java b/src/main/java/com/jenkov/java/concurrency/thread/ThreadExample6.java index ac97c95..51156d3 100644 --- a/src/main/java/com/jenkov/java/concurrency/thread/ThreadExample6.java +++ b/src/main/java/com/jenkov/java/concurrency/thread/ThreadExample6.java @@ -1,4 +1,4 @@ -package thread; +package com.jenkov.java.concurrency.thread; public class ThreadExample6 { public static void main(String[] args) { From 625f023b7adf04c3920b716c9773432ea297f931 Mon Sep 17 00:00:00 2001 From: Clost Date: Mon, 15 May 2023 18:32:14 +0100 Subject: [PATCH 11/13] Update ThreadExample7.java --- .../java/com/jenkov/java/concurrency/thread/ThreadExample7.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/jenkov/java/concurrency/thread/ThreadExample7.java b/src/main/java/com/jenkov/java/concurrency/thread/ThreadExample7.java index d5cc66b..f1b5480 100644 --- a/src/main/java/com/jenkov/java/concurrency/thread/ThreadExample7.java +++ b/src/main/java/com/jenkov/java/concurrency/thread/ThreadExample7.java @@ -1,4 +1,4 @@ -package thread; +package com.jenkov.java.concurrency.thread; public class ThreadExample7 { public static void main(String[] args) { From 31fd46c81eb23dbbbdb3dc4347721aab579cfd1b Mon Sep 17 00:00:00 2001 From: Clost Date: Mon, 15 May 2023 18:32:27 +0100 Subject: [PATCH 12/13] Update ThreadExample8.java --- .../java/com/jenkov/java/concurrency/thread/ThreadExample8.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/jenkov/java/concurrency/thread/ThreadExample8.java b/src/main/java/com/jenkov/java/concurrency/thread/ThreadExample8.java index f9f19c3..c46a4ac 100644 --- a/src/main/java/com/jenkov/java/concurrency/thread/ThreadExample8.java +++ b/src/main/java/com/jenkov/java/concurrency/thread/ThreadExample8.java @@ -1,4 +1,4 @@ -package thread; +package com.jenkov.java.concurrency.thread; public class ThreadExample8 { public static class StoppableRunnable implements Runnable{ From c89dc67b2699797d03bc2775cc796ede9855b2b5 Mon Sep 17 00:00:00 2001 From: Clost Date: Mon, 15 May 2023 18:32:39 +0100 Subject: [PATCH 13/13] Update ThreadExample9.java --- .../java/com/jenkov/java/concurrency/thread/ThreadExample9.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/jenkov/java/concurrency/thread/ThreadExample9.java b/src/main/java/com/jenkov/java/concurrency/thread/ThreadExample9.java index 6c15ed4..e1f771d 100644 --- a/src/main/java/com/jenkov/java/concurrency/thread/ThreadExample9.java +++ b/src/main/java/com/jenkov/java/concurrency/thread/ThreadExample9.java @@ -1,4 +1,4 @@ -package thread; +package com.jenkov.java.concurrency.thread; public class ThreadExample9 { public static void main(String[] args) {