Test.java Source code

Java tutorial

Introduction

Here is the source code for Test.java

Source

import java.util.concurrent.ConcurrentLinkedDeque;

public class Test {
    public static ConcurrentLinkedDeque<Item> deque = new ConcurrentLinkedDeque<>();

    public static void main(String[] args) {
        Thread producerThread = new Thread(new ItemProducer());
        Thread consumerThread = new Thread(new ItemConsumer());
        producerThread.start();
        consumerThread.start();
    }
}

class Item {
    private String description;
    private int itemId;

    public String getDescription() {
        return description;
    }

    public int getItemId() {
        return itemId;
    }

    public Item() {
        this.description = "Default Item";
        this.itemId = 0;
    }

    public Item(String description, int itemId) {
        this.description = description;
        this.itemId = itemId;
    }
}

class ItemProducer implements Runnable {
    @Override
    public void run() {
        String itemName = "";
        int itemId = 0;
        try {
            for (int i = 1; i < 8; i++) {
                itemName = "Item" + i;
                itemId = i;
                Test.deque.add(new Item(itemName, itemId));
                System.out.println("New Item Added:" + itemName + " " + itemId);
                Thread.currentThread().sleep(250);
            }
        } catch (InterruptedException ex) {
            ex.printStackTrace();
        }
    }
}

class ItemConsumer implements Runnable {

    @Override
    public void run() {
        try {
            Thread.currentThread().sleep(1000);
        } catch (InterruptedException ex) {
            ex.printStackTrace();
        }
        Item item;
        while ((item = Test.deque.pollFirst()) != null) {
            if (item == null) {
            } else {
                generateOrder(item);
            }
        }
    }

    private void generateOrder(Item item) {
        System.out.println(item.getDescription());
        System.out.println(item.getItemId());
        try {
            Thread.currentThread().sleep(1000);
        } catch (InterruptedException ex) {
            ex.printStackTrace();
        }
    }
}