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..2d15f18 --- /dev/null +++ b/src/main/java/com/jenkov/java/concurrency/thread/ThreadExample.java @@ -0,0 +1,9 @@ +package com.jenkov.java.concurrency.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..6b3a78f --- /dev/null +++ b/src/main/java/com/jenkov/java/concurrency/thread/ThreadExample10.java @@ -0,0 +1,31 @@ +package com.jenkov.java.concurrency.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..4722ca9 --- /dev/null +++ b/src/main/java/com/jenkov/java/concurrency/thread/ThreadExample2.java @@ -0,0 +1,15 @@ +package com.jenkov.java.concurrency.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(); + } +} 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..9008dfe --- /dev/null +++ b/src/main/java/com/jenkov/java/concurrency/thread/ThreadExample3.java @@ -0,0 +1,16 @@ +package com.jenkov.java.concurrency.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..c1592f7 --- /dev/null +++ b/src/main/java/com/jenkov/java/concurrency/thread/ThreadExample4.java @@ -0,0 +1,16 @@ +package com.jenkov.java.concurrency.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..3e7a15a --- /dev/null +++ b/src/main/java/com/jenkov/java/concurrency/thread/ThreadExample5.java @@ -0,0 +1,12 @@ +package com.jenkov.java.concurrency.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..51156d3 --- /dev/null +++ b/src/main/java/com/jenkov/java/concurrency/thread/ThreadExample6.java @@ -0,0 +1,14 @@ +package com.jenkov.java.concurrency.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..f1b5480 --- /dev/null +++ b/src/main/java/com/jenkov/java/concurrency/thread/ThreadExample7.java @@ -0,0 +1,19 @@ +package com.jenkov.java.concurrency.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..c46a4ac --- /dev/null +++ b/src/main/java/com/jenkov/java/concurrency/thread/ThreadExample8.java @@ -0,0 +1,50 @@ +package com.jenkov.java.concurrency.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..e1f771d --- /dev/null +++ b/src/main/java/com/jenkov/java/concurrency/thread/ThreadExample9.java @@ -0,0 +1,26 @@ +package com.jenkov.java.concurrency.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(); + } + } +}