使用异步容器
private List<ProductObserver> observers = new CopyOnWriteArrayList<>(); private Map<String, Product> products = new ConcurrentHashMap<>();
为新增的观察者 添加个bug
public void onPublished(Product product) throws InterruptedException { System.out.println("[Keeper] on product published: " + product); throw new InterruptedException(); }
结果
[Log] on product published: {Product: name=Design Patterns, price=35.6} [Admin] on product published: {Product: name=Effective Java, price=50.8} [Customer] on product published: {Product: name=Effective Java, price=50.8} [Keeper] on product published: {Product: name=Effective Java, price=50.8} java.lang.InterruptedException at com.itranswarp.learnjava.Keeper.onPublished(Main.java:75) at com.itranswarp.learnjava.observer.Store.lambda$0(Store.java:28) at java.base/java.util.concurrent.CopyOnWriteArrayList.forEach(CopyOnWriteArrayList.java:804) at com.itranswarp.learnjava.observer.Store.addNewProduct(Store.java:26) at com.itranswarp.learnjava.Main.main(Main.java:39) [Log] on product published: {Product: name=Effective Java, price=50.8} [Admin] on product price changed: {Product: name=Design Patterns, price=31.9} [Customer] on product price changed: {Product: name=Design Patterns, price=31.9} [Keeper] on product price changed: {Product: name=Design Patterns, price=31.9} [Log] on product price changed: {Product: name=Design Patterns, price=31.9}
Sign in to make a reply
伍亦勤
使用异步容器
为新增的观察者 添加个bug
结果