From 880c5c55983ce5d71a825d20ca185cb0427d7786 Mon Sep 17 00:00:00 2001
From: Tobias Jordine <jordine@hdm-stuttgart.de>
Date: Sat, 18 Jun 2022 22:28:01 +0200
Subject: [PATCH] added basic thread demo

---
 pom.xml                                       |  9 +++
 .../concurrency/demo/AudioPlayerDemo01.java   | 42 ++++++++++++++
 .../concurrency/demo/AudioPlayerDemo02.java   | 55 +++++++++++++++++++
 .../concurrency/demo/AudioPlayerDemo03.java   | 55 +++++++++++++++++++
 4 files changed, 161 insertions(+)
 create mode 100644 src/main/java/de/hdm/jordine/vorlesung/concurrency/demo/AudioPlayerDemo01.java
 create mode 100644 src/main/java/de/hdm/jordine/vorlesung/concurrency/demo/AudioPlayerDemo02.java
 create mode 100644 src/main/java/de/hdm/jordine/vorlesung/concurrency/demo/AudioPlayerDemo03.java

diff --git a/pom.xml b/pom.xml
index f4756b4..e532328 100644
--- a/pom.xml
+++ b/pom.xml
@@ -13,4 +13,13 @@
         <maven.compiler.target>17</maven.compiler.target>
     </properties>
 
+    <dependencies>
+        <!-- https://mvnrepository.com/artifact/javazoom/jlayer -->
+        <dependency>
+            <groupId>javazoom</groupId>
+            <artifactId>jlayer</artifactId>
+            <version>1.0.1</version>
+        </dependency>
+    </dependencies>
+
 </project>
\ No newline at end of file
diff --git a/src/main/java/de/hdm/jordine/vorlesung/concurrency/demo/AudioPlayerDemo01.java b/src/main/java/de/hdm/jordine/vorlesung/concurrency/demo/AudioPlayerDemo01.java
new file mode 100644
index 0000000..e287e56
--- /dev/null
+++ b/src/main/java/de/hdm/jordine/vorlesung/concurrency/demo/AudioPlayerDemo01.java
@@ -0,0 +1,42 @@
+package de.hdm.jordine.vorlesung.concurrency.demo;
+
+import javazoom.jl.player.Player;
+
+import java.io.BufferedInputStream;
+import java.io.FileInputStream;
+import java.util.Scanner;
+
+// Inspired by https://www.delftstack.com/de/howto/java/java-play-mp3/
+public class AudioPlayerDemo01 {
+
+    private Player player;
+
+    public void playAudio(String path){
+        try {
+            FileInputStream fileInputStream = new FileInputStream(path);
+            BufferedInputStream bufferedInputStream = new BufferedInputStream(fileInputStream);
+            player = new Player(bufferedInputStream);
+            player.play();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    public static void main(String[] args) {
+        AudioPlayerDemo01 demo = new AudioPlayerDemo01();
+
+        Scanner sc = new Scanner(System.in);
+
+        System.out.println("Write stop to stop the music: ");
+
+        demo.playAudio("/Users/tobiasjordine/Documents/HdM/SE3/sose2022/misc/demo_audio/sample_01.mp3");
+
+        demo.playAudio("/Users/tobiasjordine/Documents/HdM/SE3/sose2022/misc/demo_audio/sample_02.mp3");
+
+        if (sc.nextLine().equalsIgnoreCase("stop")) {
+            demo.player.close();
+        }
+
+    }
+
+}
diff --git a/src/main/java/de/hdm/jordine/vorlesung/concurrency/demo/AudioPlayerDemo02.java b/src/main/java/de/hdm/jordine/vorlesung/concurrency/demo/AudioPlayerDemo02.java
new file mode 100644
index 0000000..6de6e00
--- /dev/null
+++ b/src/main/java/de/hdm/jordine/vorlesung/concurrency/demo/AudioPlayerDemo02.java
@@ -0,0 +1,55 @@
+package de.hdm.jordine.vorlesung.concurrency.demo;
+
+import javazoom.jl.player.Player;
+
+import java.io.BufferedInputStream;
+import java.io.FileInputStream;
+import java.util.Scanner;
+
+// Inspired by https://www.delftstack.com/de/howto/java/java-play-mp3/
+public class AudioPlayerDemo02 {
+
+    private Player player;
+
+    public void playAudio(String path){
+        try {
+            FileInputStream fileInputStream = new FileInputStream(path);
+            BufferedInputStream bufferedInputStream = new BufferedInputStream(fileInputStream);
+            player = new Player(bufferedInputStream);
+            player.play();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    public static void main(String[] args) {
+        AudioPlayerDemo02 demo = new AudioPlayerDemo02();
+
+        Scanner sc = new Scanner(System.in);
+
+        System.out.println("Write stop to stop the music: ");
+
+        Thread t0 = new Thread(new Runnable() {
+            @Override
+            public void run() {
+                demo.playAudio("/Users/tobiasjordine/Documents/HdM/SE3/sose2022/misc/demo_audio/sample_01.mp3");
+            }
+        });
+
+        Thread t1 = new Thread(new Runnable() {
+            @Override
+            public void run() {
+                demo.playAudio("/Users/tobiasjordine/Documents/HdM/SE3/sose2022/misc/demo_audio/sample_02.mp3");
+            }
+        });
+
+        t0.start();
+        t1.start();
+
+        if (sc.nextLine().equalsIgnoreCase("stop")) {
+            demo.player.close();
+        }
+
+    }
+
+}
diff --git a/src/main/java/de/hdm/jordine/vorlesung/concurrency/demo/AudioPlayerDemo03.java b/src/main/java/de/hdm/jordine/vorlesung/concurrency/demo/AudioPlayerDemo03.java
new file mode 100644
index 0000000..202ba24
--- /dev/null
+++ b/src/main/java/de/hdm/jordine/vorlesung/concurrency/demo/AudioPlayerDemo03.java
@@ -0,0 +1,55 @@
+package de.hdm.jordine.vorlesung.concurrency.demo;
+
+import javazoom.jl.player.Player;
+
+import java.io.BufferedInputStream;
+import java.io.FileInputStream;
+import java.util.Scanner;
+
+// Inspired by https://www.delftstack.com/de/howto/java/java-play-mp3/
+public class AudioPlayerDemo03 {
+
+    private Player player;
+
+    public synchronized void playAudio(String path){
+        try {
+            FileInputStream fileInputStream = new FileInputStream(path);
+            BufferedInputStream bufferedInputStream = new BufferedInputStream(fileInputStream);
+            player = new Player(bufferedInputStream);
+            player.play();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    public static void main(String[] args) {
+        AudioPlayerDemo03 demo = new AudioPlayerDemo03();
+
+        Scanner sc = new Scanner(System.in);
+
+        System.out.println("Write stop to stop the music: ");
+
+        Thread t0 = new Thread(new Runnable() {
+            @Override
+            public void run() {
+                demo.playAudio("/Users/tobiasjordine/Documents/HdM/SE3/sose2022/misc/demo_audio/sample_01.mp3");
+            }
+        });
+
+        Thread t1 = new Thread(new Runnable() {
+            @Override
+            public void run() {
+                demo.playAudio("/Users/tobiasjordine/Documents/HdM/SE3/sose2022/misc/demo_audio/sample_02.mp3");
+            }
+        });
+
+        t0.start();
+        t1.start();
+
+        if (sc.nextLine().equalsIgnoreCase("stop")) {
+            demo.player.close();
+        }
+
+    }
+
+}
-- 
GitLab