【发布时间】:2014-06-04 09:51:56
【问题描述】:
和this question一样,我想知道为什么Java团队没有在Lock接口中添加一些默认方法,像这样:
public default void withLock(Runnable r) {
lock();
try {
r.run();
} finally {
unlock();
}
}
这将允许程序员这样做
public class ThreadSafe {
// Object requiring protection
private final List<String> l = new ArrayList<>();
private final Lock lock = new ReentrantLock();
public void mutate(String s) {
lock.withLock(() -> l.add(s));
}
public void threadSafeMethod {
lock.withLock(() -> { System.out.println(l.get(l.size())); });
}
}
而不是
public void threadSafeMethod {
lock.lock();
try {
System.out.println(l.get(l.size()));
} finally {
lock.unlock();
}
}
【问题讨论】:
标签: locking java-8 default-method