Discuss / Java / 增加一种类型的观察者,并把通知改为异步。

增加一种类型的观察者,并把通知改为异步。

Topic source
class PriceManagement implements ProductObserver {

	@Override
	public void onPublished(Product product) {
		System.out.println("[PriceManagement] on product published: " + product);
	}

	@Override
	public void onPriceChanged(Product product) {
		System.out.println("[PriceManagement] on product price changed: " + product);
	}

}

	public void addNewProduct(String name, double price) {
		Product p = new Product(name, price);
		products.put(p.getName(), p);
		observers.forEach(o -> new Thread() {
			@Override
			public void run() {
				o.onPublished(p);
			}
		}.start());
	}

	public void setProductPrice(String name, double price) {
		Product p = products.get(name);
		p.setPrice(price);
		observers.forEach(o -> new Thread() {
			public void run() {
				o.onPriceChanged(p);
			}
		}.start());
	}

木火应

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

参考了大神的答案,但一直没试出来?

所以改了下:

public void addNewProduct(String name, double price) {                        Product p = new Product(name, price);         
      products.put(p.getName(), p);        observers.forEach(o -> new Thread(()->o.onPublished(p)).start());
}
public void setProductPrice(String name, double price) {                      Product p = products.get(name);   p.setPrice(price);
      observers.forEach(o ->new Thread(()->o.onPriceChanged(p)).start());                             }

木火应

#3 Created at ... [Delete] [Delete and Lock User]
public void addNewProduct(String name, double price) {                        Product p = new Product(name, price);         
      products.put(p.getName(), p);        observers.forEach(o -> new Thread(()->o.onPublished(p)).start());
}
public void setProductPrice(String name, double price) {                      Product p = products.get(name);   p.setPrice(price);
      observers.forEach(o ->new Thread(()->o.onPriceChanged(p)).start());          

木火应

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

这代码格式,也是醉了?

里奥08

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

楼主 你这是多线程 异步一般是单线程的

b3tter

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


  • 1

Reply