我使用Lazy<T>
LazyThreadSafetyMode
作为ExecutionAndPublication
并使用初始化方法。
我想要实现的是,如果在一个线程上初始化失败,那么下一个线程应该尝试再次初始化它。我不希望所有线程都进行初始化竞争(如仅发布模式)或者为所有线程再次缓存和抛出异常(如在ExecutionAndPublication模式下)。
有没有办法实现这个目标?
答案 0 :(得分:2)
正如here
所解释的那样如上一节所述,由Lazy对象创建 指定LazyThreadSafetyMode.PublicationOnly处理异常 不同。使用PublicationOnly,多个线程可以竞争 初始化Lazy实例。在这种情况下,例外情况不是 缓存,并尝试访问Value属性可以继续,直到 初始化成功。