V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
c4f36e5766583218
V2EX  ›  Java

Vector.Itr 该类源码中的 synchronized 是为了?

  •  
  •   c4f36e5766583218 · 2019-04-09 08:21:57 +08:00 · 1636 次点击
    这是一个创建于 1815 天前的主题,其中的信息可能已经有所发展或是发生改变。

    不知道什么关键字触发 403 Forbidden nginx 了,我一段段打

    1. java.util.Vector.Itr 源码里面好几处,这样写的作用是?
    synchronized (Vector.this) {
    
    第 1 条附言  ·  2019-04-09 09:58:51 +08:00
    1. 1.8的java.util.Vector#readObject(ObjectInputStream) 源码里没看到defaultReadObject也没读capacityIncrement,反序列化会丢capacityIncrement值吧?
    第 2 条附言  ·  2019-04-10 16:01:23 +08:00

    三: SynchronizedList和Vector的区别?只回答sync相关的区别即可(比如Collections#synchronizedList(ArrayList)与Vector)

    第 3 条附言  ·  2019-04-10 17:18:57 +08:00
    #SynchronizedList和Vector的区别,网上搜到一个但没没明白要点
    #老是被ban,不知道触发了什么关键字,浏览器Console执行下
    ["h","t","t","p","s",":","/","/","w","w","w",".","h","o","l","l","i","s","c","h","u","a","n","g",".","c","o","m","/","a","r","c","h","i","v","e","s","/","4","9","8"].join("/")
    
    4 条回复    2019-04-11 08:43:08 +08:00
    jsshaojinjie
        1
    jsshaojinjie  
       2019-04-09 08:27:58 +08:00
    是为了线程安全
    c4f36e5766583218
        2
    c4f36e5766583218  
    OP
       2019-04-10 18:28:50 +08:00
    fix: 打错了,是.join("")

    @jsshaojinjie #1

    * 哦,我搞错了,问题 1 应该是这样: 这样写是保证 Vector.Itr 创建的实例是线程安全的,比如 Vector.Itr#remove()方法内部```remove(lastRet);```不会并发导致数据多删,(线程安全并不是说不会报错,像 remove 的话还是可能 ArrayIndexOutOfBoundsException 的)
    * 那问题 3 应该就是说 SynchronizedList 返回的 Iterator 并不一定是线程安全的

    updated: 那看下问题 2 吧。
    jsshaojinjie
        3
    jsshaojinjie  
       2019-04-11 08:28:04 +08:00
    @c4f36e5766583218 哪个是问题 2
    c4f36e5766583218
        4
    c4f36e5766583218  
    OP
       2019-04-11 08:43:08 +08:00
    @jsshaojinjie #3 问题 2=第 1 条附言
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   4958 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 09:49 · PVG 17:49 · LAX 02:49 · JFK 05:49
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.