diff --git a/Main.java b/Main.java index 1a68b2dd0a36d3447eed91dc217b0ec3bb12c172..2cff7ed2e0f9559eb9caceecea17a83d94529787 100644 --- a/Main.java +++ b/Main.java @@ -1,5 +1,36 @@ -class Main { - public static void main(String[] args) { - System.out.println("Hello world!"); - } +import java.util.LinkedList; +import java.util.List; +import java.util.concurrent.CopyOnWriteArrayList; +import java.util.concurrent.Semaphore; + +public class Main { + private static final List productCodeDetailsList = new CopyOnWriteArrayList<>(); + private static final Semaphore semaphore = new Semaphore(1); + + public static void main(String[] args) { + for (int i = 0; i < 1000; i++) { + int finalI = i; + new Thread(() -> { + try { + semaphore.acquire(); + productCodeDetailsList.add(finalI); + if (finalI % 100 == 0) { + productCodeDetailsList.clear(); + } + } catch (InterruptedException e) { + e.printStackTrace(); + } finally { + semaphore.release(); + } + }).start(); + } + + try { + Thread.sleep(3000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + System.out.println(productCodeDetailsList); + System.out.println(productCodeDetailsList.size()); + } } \ No newline at end of file