那很简单:
class Sample { private String message = null; private final Object lock = new Object(); public void newMessage(String x) { synchronized (lock) { message = x; } } public String getMessage() { synchronized (lock) { String temp = message; message = null; return temp; } }}请注意,我 既没有 使方法本身同步, 也没有 在上同步
this。我坚信,除非您 有意
公开该锁,否则仅对只有您的代码才能访问的对象获取锁是个好主意。这样可以轻松地向自己保证,其他任何东西都不会以与您的代码不同的顺序获取锁,等等。



