您的位置: 域名 - 建站教程
« 上一篇下一篇 »

防止多个进程同时修改

分类: 建站教程 发布: zhushican 浏览: 日期: 2014-08-14

Java容器还有一种能防止多个进程同时修改容器内容的机制。假设你正在遍历某个容器,这时另一个进程插了进来,对容器做了插入,删除或是修改里边的对象,于是这个问题就来了。或许你已经把对象传出去了,但是它抢在你前头把它给删了,或许你调用了size,但是容器已经缩水了——会引发灾难的可能性太多了。

Java容器类库集成了一个叫fail fast(及早报告错误)机制,它能找出所有不应由进程负责的容器的变化。如果它发现有人在修改容器,它会立即返回一个错误。这就是它fail fast的地方,它不会等出了问题之后再去用很复杂的算法去找问题了。

要想观察fail fast很容易,只要创建一个迭代器,然后在iterator的位置上往collection里面加东西就行了。在运行时发现会这种异常,那是因为你是在已经获取容器的iterator的情况下往里面加对象的。程序的两个部分会修改同一个容器的这种可能性,会导致程序处于不确定的状态,因此它抛出一个异常来通知你,你应该修改代码了,碰到这种情况,你应该先往容器里面加元素,再去获取容器的iterator。

相关文章:

  • 评论:(0)
发表评论

Powered By qqq114.cn

Copyright 【10000个好做seo优化的域名】. Some Rights Reserved.