From 860b641d6331a51b5f7f9fd6ec43762e7c0bb58e Mon Sep 17 00:00:00 2001 From: Tobias Jordine <jordine@hdm-stuttgart.de> Date: Sun, 19 Jun 2022 13:59:44 +0200 Subject: [PATCH] thread demo extended --- .../concurrency/demo/AudioPlayerDemo04.java | 70 +++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 src/main/java/de/hdm/jordine/vorlesung/concurrency/demo/AudioPlayerDemo04.java diff --git a/src/main/java/de/hdm/jordine/vorlesung/concurrency/demo/AudioPlayerDemo04.java b/src/main/java/de/hdm/jordine/vorlesung/concurrency/demo/AudioPlayerDemo04.java new file mode 100644 index 0000000..54bfbe9 --- /dev/null +++ b/src/main/java/de/hdm/jordine/vorlesung/concurrency/demo/AudioPlayerDemo04.java @@ -0,0 +1,70 @@ +package de.hdm.jordine.vorlesung.concurrency.demo; + +import javazoom.jl.player.Player; + +import java.io.BufferedInputStream; +import java.io.FileInputStream; +import java.util.Scanner; +import java.util.concurrent.locks.ReentrantLock; + +// Inspired by https://www.delftstack.com/de/howto/java/java-play-mp3/ +public class AudioPlayerDemo04 { + + private Player player; + private ReentrantLock lock = new ReentrantLock(); + + public void playAudio(String path){ + try { + lock.lock(); + FileInputStream fileInputStream = new FileInputStream(path); + BufferedInputStream bufferedInputStream = new BufferedInputStream(fileInputStream); + player = new Player(bufferedInputStream); + + System.out.println("Playing " + path); + player.play(); + + lock.unlock(); + + } catch (Exception e) { + e.printStackTrace(); + } + } + + public static void main(String[] args) throws InterruptedException { + AudioPlayerDemo04 demo = new AudioPlayerDemo04(); + + 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() { + System.out.println("Starting t0"); + demo.playAudio("/Users/tobiasjordine/Documents/HdM/SE3/sose2022/misc/demo_audio/sample_01.mp3"); + } + }); + + Thread t1 = new Thread(new Runnable() { + @Override + public void run() { + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + System.out.println("Starting t1"); + 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