diff --git a/os/code/os/pom.xml b/os/code/os/pom.xml new file mode 100644 index 0000000..6425d7c --- /dev/null +++ b/os/code/os/pom.xml @@ -0,0 +1,81 @@ + + + + 4.0.0 + + com.scaler + os + pyenv shell 3.9.7 + + os + + http://www.example.com + + + UTF-8 + 1.9 + 1.9 + + + + + junit + junit + 4.11 + test + + + org.projectlombok + lombok + 1.18.24 + provided + + + + + + + + + maven-clean-plugin + 3.1.0 + + + + maven-resources-plugin + 3.0.2 + + + maven-compiler-plugin + 3.8.0 + + + maven-surefire-plugin + 2.22.1 + + + maven-jar-plugin + 3.0.2 + + + maven-install-plugin + 2.5.2 + + + maven-deploy-plugin + 2.8.2 + + + + maven-site-plugin + 3.7.1 + + + maven-project-info-reports-plugin + 3.0.0 + + + + + diff --git a/os/code/os/src/main/java/com/scaler/App.java b/os/code/os/src/main/java/com/scaler/App.java new file mode 100644 index 0000000..6a73e3c --- /dev/null +++ b/os/code/os/src/main/java/com/scaler/App.java @@ -0,0 +1,13 @@ +package com.scaler; + +/** + * Hello world! + * + */ +public class App +{ + public static void main( String[] args ) + { + System.out.println( "Hello World!" ); + } +} diff --git a/os/code/os/src/main/java/com/scaler/producerconsumer/Consumer.java b/os/code/os/src/main/java/com/scaler/producerconsumer/Consumer.java new file mode 100644 index 0000000..b37dc96 --- /dev/null +++ b/os/code/os/src/main/java/com/scaler/producerconsumer/Consumer.java @@ -0,0 +1,27 @@ +package com.scaler.producerconsumer; + +import java.util.Queue; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +@AllArgsConstructor +@Getter +public class Consumer implements Runnable { + + private Queue store; + private String name; + + + @Override + public void run() { + while (true) { + if (store.size() > 0) { + store.remove(); + System.out.println("Consumed: " + name + " Left units :" + store.size()); + } + } + + } + +} diff --git a/os/code/os/src/main/java/com/scaler/producerconsumer/Producer.java b/os/code/os/src/main/java/com/scaler/producerconsumer/Producer.java new file mode 100644 index 0000000..acefd12 --- /dev/null +++ b/os/code/os/src/main/java/com/scaler/producerconsumer/Producer.java @@ -0,0 +1,28 @@ +package com.scaler.producerconsumer; + +import java.util.Queue; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +@AllArgsConstructor +@Getter +public class Producer implements Runnable { + + private Queue store; + private int maxSize; + private String name; + + + @Override + public void run() { + while (true) { + if (store.size() < maxSize) { + store.add(new UnitOfWork()); + System.out.println("Produced: " + name + " Left units :" + store.size()); + } + } + + } + +} diff --git a/os/code/os/src/main/java/com/scaler/producerconsumer/Runner.java b/os/code/os/src/main/java/com/scaler/producerconsumer/Runner.java new file mode 100644 index 0000000..78ee9db --- /dev/null +++ b/os/code/os/src/main/java/com/scaler/producerconsumer/Runner.java @@ -0,0 +1,31 @@ +package com.scaler.producerconsumer; + +import java.util.ArrayDeque; +import java.util.Queue; +import java.util.Set; +import java.util.stream.Collectors; + +public class Runner { + + private static final Set producerNames = Set.of("p1", "p2", "p3"); + private static final Set consumerNames = Set.of("c1", "c2", "c3", "c4"); + + public static void main(String[] args) { + Queue store = new ArrayDeque<>(); + int maxSize = 20; + + Set producers = producerNames + .stream() + .map(name -> new Producer(store, maxSize, name)) + .collect(Collectors.toSet()); + + Set consumers = consumerNames + .stream() + .map(name -> new Consumer(store, name)) + .collect(Collectors.toSet()); + + producers.forEach(producer -> new Thread(producer).start()); + consumers.forEach(consumer -> new Thread(consumer).start()); + + } +} diff --git a/os/code/os/src/main/java/com/scaler/producerconsumer/UnitOfWork.java b/os/code/os/src/main/java/com/scaler/producerconsumer/UnitOfWork.java new file mode 100644 index 0000000..484e681 --- /dev/null +++ b/os/code/os/src/main/java/com/scaler/producerconsumer/UnitOfWork.java @@ -0,0 +1,5 @@ +package com.scaler.producerconsumer; + +public class UnitOfWork { + +} diff --git a/os/code/os/src/test/java/com/scaler/AppTest.java b/os/code/os/src/test/java/com/scaler/AppTest.java new file mode 100644 index 0000000..7ec3246 --- /dev/null +++ b/os/code/os/src/test/java/com/scaler/AppTest.java @@ -0,0 +1,20 @@ +package com.scaler; + +import static org.junit.Assert.assertTrue; + +import org.junit.Test; + +/** + * Unit test for simple App. + */ +public class AppTest +{ + /** + * Rigorous Test :-) + */ + @Test + public void shouldAnswerWithTrue() + { + assertTrue( true ); + } +} diff --git a/os/code/os/target/classes/com/scaler/App.class b/os/code/os/target/classes/com/scaler/App.class new file mode 100644 index 0000000..6737821 Binary files /dev/null and b/os/code/os/target/classes/com/scaler/App.class differ diff --git a/os/code/os/target/classes/com/scaler/producerconsumer/Consumer.class b/os/code/os/target/classes/com/scaler/producerconsumer/Consumer.class new file mode 100644 index 0000000..ed16821 Binary files /dev/null and b/os/code/os/target/classes/com/scaler/producerconsumer/Consumer.class differ diff --git a/os/code/os/target/classes/com/scaler/producerconsumer/Producer.class b/os/code/os/target/classes/com/scaler/producerconsumer/Producer.class new file mode 100644 index 0000000..3761e03 Binary files /dev/null and b/os/code/os/target/classes/com/scaler/producerconsumer/Producer.class differ diff --git a/os/code/os/target/classes/com/scaler/producerconsumer/Runner.class b/os/code/os/target/classes/com/scaler/producerconsumer/Runner.class new file mode 100644 index 0000000..7df08f9 Binary files /dev/null and b/os/code/os/target/classes/com/scaler/producerconsumer/Runner.class differ diff --git a/os/code/os/target/classes/com/scaler/producerconsumer/UnitOfWork.class b/os/code/os/target/classes/com/scaler/producerconsumer/UnitOfWork.class new file mode 100644 index 0000000..7ef319d Binary files /dev/null and b/os/code/os/target/classes/com/scaler/producerconsumer/UnitOfWork.class differ diff --git a/os/code/os/target/test-classes/com/scaler/AppTest.class b/os/code/os/target/test-classes/com/scaler/AppTest.class new file mode 100644 index 0000000..20815e5 Binary files /dev/null and b/os/code/os/target/test-classes/com/scaler/AppTest.class differ