Discuss / Java / 使用异步窗口,并通过Exception 试验异步是否成功。

使用异步窗口,并通过Exception 试验异步是否成功。

Topic source

伍亦勤

#1 Created at ... [Delete] [Delete and Lock User]

使用异步容器

	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}

  • 1

Reply