Fail safe vs Fail fast

转载 2015年07月10日 10:48:14

“Fail safe” means: it won’t fail.
“Fail fast” means: it may fail(只是有可能,所以,有时也不会fail,例如你在使用iterator遍历到数组的最后一个元素时,数组被删除了一个元素,这时候是不会fail的) … and the failure condition is checked aggressively so that the failure condition is detectedbefore damage can be done.
The alternative to “fail safe” and “fail fast” is to fail unpredictably; e.g. to sometimes give the wrong answer or throw some unexpected exception. (This was the behaviour of some standard implementations of the Enumeration API in early versions of Java.)
… and are they different from the iterator we use for collection.
No. These are properties of the Iterators implemented by standard Collection types; i.e. they are either “fail fast” or “fail safe” … when used correctly with respect to synchronization and the Java memory model. (By contrast, if you use an non-concurrent Iterator or Collection without the correct external synchronization, all bets are off …)
Also what is the name of iterator we normally use to iterate.
Umm … the actual class name depends on how you got the Iterator, as do the Iterator’s properties; e.g. “fail fast” versus “fail safe”. For the standard classes and iterators obtained using the iterator() method, the properties are specified by the collection classes javadocs.
… how are they implemented.
The fail-fast iterators are typically implemented using a volatile counter on the list object.

* When the list is updated, the counter is incremented.
* When an Iterator is created, the current value of the counter is embedded in the Iterator object.
* When an Iterator operation is performed, the method compares the two counter values and throws a CME if they are different.

The implementation of fail-safe iterators is typically light-weight. They typically rely on properties of the specific list implementation’s data structures. There is no general pattern. (Read the source code for the specific cases you are interested in.)

Fail Fast Vs Fail Safe

原文Fail Fast And Fail Safe Iterators In Java :java中的迭代器使我们能够遍历Collection对象。 集合返回的迭代器本质上是Fail Fast的或 F...
  • cyuanxin
  • cyuanxin
  • 2017年02月19日 14:18
  • 326

夜谈 Java中 Fail-fast 和 Fail-safe 的原理与使用

在我们详细讨论这两种机制的区别之前,首先得先了解并发修改。 1.什么是同步修改? 当一个或多个线程正在遍历一个集合Collection,此时另一个线程修改了这个集合的内容(添加,删除或者修改)。这...
  • bigtree_3721
  • bigtree_3721
  • 2017年03月27日 23:40
  • 595

java中fail-fast 和 fail-safe的区别

  • ch717828
  • ch717828
  • 2015年07月15日 13:39
  • 12342

Fail Fast与Fail Safe的区别

Fail FastFail Fast Iterator在遍历集合时,若该集合发生了结构性的改变,则将抛出 ConcurrentModification 异常。例如: Map premiu...
  • CanoeStream
  • CanoeStream
  • 2015年07月12日 13:57
  • 1432

Fail Fast And Fail Safe Iterators In Java

Iterators in java give us the facility to traverse over the Collection objects. Iterators returned b...
  • u011263794
  • u011263794
  • 2016年07月28日 15:21
  • 174

Fail: Failover,Failfast,Failback,Failsafe

failoverfailover 又称故障切换,指系统中其中一项设备或服务失效而无法运作时,另一项设备或服务即可自动接手原失效系统所执行的工作。 通俗地说,即当A无法为客户服务时,系统能够自动地切换...
  • luojinbai
  • luojinbai
  • 2016年12月01日 23:32
  • 1731

fail-fast 与 fail-safe 机制有什么区别

在我们详细讨论这两种机制的区别之前,首先得先了解并发修改。 1.什么是同步修改? 当一个或多个线程正在遍历一个集合Collection,此时另一个线程修改了这个集合的内容(添加,删除或者修...
  • u014692324
  • u014692324
  • 2017年11月19日 21:08
  • 183

Java:fail-safe 机制

Java:fail-safe 机制
  • Silent_Paladin
  • Silent_Paladin
  • 2017年01月03日 22:08
  • 623

fail fast

Fail Fast从字面上看是“快速失败”的意思,或者叫做“速错”,其含义就是让可能发生的错误尽早的被发现。 无论是人类,还是代码这个道理都是适用的。我们在做事的时候,犯错误是很常见的,但是我们应该尽...
  • lucklyming
  • lucklyming
  • 2013年12月05日 16:08
  • 311

Java Collection的Fail fast与Fail safe迭代器

Java中Fail fast与Fail safe迭代器的区别
  • bigdata_wang
  • bigdata_wang
  • 2015年10月22日 11:27
  • 657
您举报文章:Fail safe vs Fail fast