Man*_*pal 3 java concurrency java-8
关于这个问题 -
如果我们用 lambda 或方法引用替换匿名类,那么这段代码为什么以及如何表现?
public class ThisEscape {
public ThisEscape(EventSource source) {
source.registerListener(e -> doSomething(e));
}
}
Run Code Online (Sandbox Code Playgroud)
从技术上讲,创建匿名内部类或使用 lambda 没有太大区别。Lambda 不仅仅是语法糖果,它使 Java 一直能够做的事情更加突出、易于访问且不易出错。也就是说,您的代码受制于您提到的问题及其答案中描述的相同竞争条件。
使用给定的代码构造,您无法保证ThisEscape在doSomething调用之前正确创建了实例。
阅读此答案中链接的 javaspecialists.eu 时事通讯,了解在哪些情况下可能会出现问题。
| 归档时间: |
|
| 查看次数: |
104 次 |
| 最近记录: |