Java Reference
In-Depth Information
- quantityOrdered);
CustomerOrder order = new
CustomerOrder(itemOrdered, quantityOrdered, customerName);
customerOrders.add(order);
System.out.println("Order fulfilled for
"+customerName+" of "+itemOrdered+"
("+quantityOrdered+")");
return true;
}
}
private void checkInventoryLevels() {
synchronized (inventoryMap) {
System.out.println("------------------------------------");
inventoryMap.entrySet().stream().forEach((inventoryEntry)
-> {
System.out.println("Inventory Level
:"+inventoryEntry.getKey()+"
"+inventoryEntry.getValue());
});
System.out.println("------------------------------------");
}
}
private void displayOrders() {
synchronized (inventoryMap) {
customerOrders.stream().forEach((order) -> {
System.out.println(order.getQuantityOrdered()+"
"+order.getItemOrdered()+" for
"+order.getCustomerName());
});
}
}
Solution 2
Using a reentrant lock, you can prevent multiple threads from accessing the same crit-
ical area of the code. In this solution, the inventoryLock is acquired by calling
Search WWH ::




Custom Search