和这个问题一样,我想知道为什么 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();
}
}