c4f36e5766583218
V2EX  ›  Java

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

  •  
  •   c4f36e5766583218 · Apr 9, 2019 · 2504 views
    This topic created in 2605 days ago, the information mentioned may be changed or developed.

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

    1. java.util.Vector.Itr 源码里面好几处,这样写的作用是?
    synchronized (Vector.this) {
    
    Supplement 1  ·  Apr 9, 2019
    1. 1.8的java.util.Vector#readObject(ObjectInputStream) 源码里没看到defaultReadObject也没读capacityIncrement,反序列化会丢capacityIncrement值吧?
    Supplement 2  ·  Apr 10, 2019

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

    Supplement 3  ·  Apr 10, 2019
    #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 replies    2019-04-11 08:43:08 +08:00
    jsshaojinjie
        1
    jsshaojinjie  
       Apr 9, 2019
    是为了线程安全
    c4f36e5766583218
        2
    c4f36e5766583218  
    OP
       Apr 10, 2019
    fix: 打错了,是.join("")

    @jsshaojinjie #1

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

    updated: 那看下问题 2 吧。
    jsshaojinjie
        3
    jsshaojinjie  
       Apr 11, 2019
    @c4f36e5766583218 哪个是问题 2
    c4f36e5766583218
        4
    c4f36e5766583218  
    OP
       Apr 11, 2019
    @jsshaojinjie #3 问题 2=第 1 条附言
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5347 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 08:02 · PVG 16:02 · LAX 01:02 · JFK 04:02
    ♥ Do have faith in what you're doing.