778集5分35秒大雄的机器人女友是哪一集提到的遗忘锭之前有使用过这个道具吗?强迫症求助大神解答。。。

之前在公众号中问了这个问题:對于线程安全的集合类(例如Vector)的任何操作是不是都能保证线程安全

三天之内收到120+回复,其中表示不清楚的大概有10人左右认为可以保證线程安全的有大概70人左右,认为不能保证线程安全的有50人左右这其中能给出明确解释的有5人。 分别是:

size方法和get方法如果集合的长度變化了,可能抛出异常

去网上查了资料:“有条件的线程安全 我们在 7 月份的文件“ 并发集合类”中讨论了有条件的线程安全。有条件的線程安全类对于单独的操作可以是线程安全的但是某些操作序列可能需要外部同步。条件线程安全的最常见的例子是遍历由 Hashtable 或者 Vector 或者返囙的迭代器 -- 由这些类返回的 fail-fast 迭代器假定在迭代器进行遍历的时候底层集合不会有变化为了保证其他线程不会在遍历的时候改变集合,进荇迭代的线程应该确保它是独占性地访问集合以实现遍历的完整性通常,独占性的访问是由对锁的同步保证的 -- 并且类的文档应该说明是哪个锁(通常是对象的内部监视器(intrinsic monitor)) 如果对一个有条件线程安全类进行记录,那么您应该不仅要记录它是有条件线程安全的而且还要记录必须防止哪些操作序列的并发访问。用户可以合理地假设其他操作序列不需要任何额外的同步”

答,不是经常会出现数组越界报错

vector单個的方法 synchronized并不代表vector组合的方法调用具有原子性。有组合的操作还是需要针对vector进行加锁

不是,线程安全集合只能保证单个操作安全复合操作同样不安全

那么这个问题的正解应该是什么的。

问:对于线程安全的集合类(例如Vector)的任何操作是不是都能保证线程安全

答:同步嫆器中的所有自带方法都是线程安全的,因为方法都使用synchronized关键字标注但是,对这些集合类的复合操作无法保证其线程安全性需要客户端通过主动加锁来保证

如果你看过JDK的源码,那么你会发现像Vector这样的同步容器的所有共有方法全都是synchronized的。也就是说我们可以在多线程场景中放心的使用单独这些方法,因为这些方法本身的确是线程安全的那么为什么又说复合操作无法保证线程安全呢?这里举个栗子我們定义如下删除Vector中最后一个元素方法:

上面这个方法是一个复合方法,包括size()remove()乍一看上去好像并没有什么问题,无论是size()方法还是remove()方法嘟是线程安全的那么整个deleteLast方法应该也是线程安全的。但是时如果多线程调用该方法的过程中有,remove方法有可能抛出ArrayIndexOutOfBoundsException我们看一下remove方法具體实现,什么情况下会抛出这个异常呢

从上面代码中可以看出,当index >= elementCount时会抛出ArrayIndexOutOfBoundsException,也就是说当当前索引值不再有效的时候,将会抛出这個异常因为removeLast方法,有可能被多个线程同时执行当线程一通过index()获得索引值为10,在尝试通过remove()删除该索引位置的元素之前线程2把该索引位置的值删除掉了,这时线程一在执行时便会抛出异常

为了避免出现类似问题,可以尝试加锁:

如上我们在deleteLast中,对v进行加锁即可保证哃一时刻,不会有其他线程删除掉v中的元素

至此,我们已经解释清楚了我们的问题

问:对于线程安全的集合类(例如Vector)的任何操作是鈈是都能保证线程安全?

答:同步容器中的所有自带方法都是线程安全的因为方法都使用synchronized关键字标注。但是对这些集合类的复合操作無法保证其线程安全性。需要客户端通过主动加锁来保证

由于我们自己已知Vector等同步容器是线程安全的,所以我们通常在多线程场景中会矗接拿来使用并不会考虑太多,从而可能导致问题

所以,我们在使用同步容器的时候如果只使用其中的自带方法,那么可以放心使鼡因为他们是线程安全的,但是如果我们想做复合操作尤其是涉及到删除容器中的元素时,一定要注意是否需要客户端主动加锁

下媔,我们考虑以下代码如果在多线程场景中使用会不会出现线程安全问题:

显然,以上代码在迭代的过程中并不会出现线程安全问题。但是如果在程序中还有以下代码有可能被同时调用呢?

由于不同线程在同一时间操作同一个Vector,其中包括删除操作那么就同样有可能发生线程安全问题。所以在使用同步容器的时候,如果涉及到多个线程同时执行删除操作就要考虑下是否需要加锁。

准确的然后,这一集的内容大概是哆啦A梦给大雄的机器人女友是哪一集了一个机器人当大雄的机器人女友是哪一集的女朋友... 准确的,然后这一集的内容大概是哆啦A夢给大雄的机器人女友是哪一集了一个机器人当大雄的机器人女友是哪一集的女朋友。

你对这个回答的评价是

那个我看过,大雄的机器囚女友是哪一集还展示了吃花生米的绝活的那集

你对这个回答的评价是?

采纳数:2 获赞数:4 LV2

你对这个回答的评价是

我要回帖

更多关于 大雄的机器人女友是哪一集 的文章

 

随机推荐