一个常见的访问字段的方式是同步getter和setter方法。一个简单的例子,使用int类型:
private int foo = 0;
public synchronized int get(){return this.foo;}
public synchronized void set(int bar){ this.foo = bar;}
现在,虽然这是一种确保访问线程安全的安全方式,但它也揭示了只有一个线程可以同时读取
foo
。如果许多线程经常读取
foo
,并且仅有时更新此变量,则会浪费大量资源。getter方法可以被多个线程同时调用而不会出现任何问题。是否有任何已建立的模式来处理这个问题?或者你会以最优雅的方式解决这个问题?