我看了一个贴子讨论,很多人都说Vector是线程同步的,需要多线程的情况下用它。当然arrayList也可以支持多线程。
我想问的是,多线程的情况下,如果自己有一个vector对象会被从个线程访问,自己直接对访问它的方法做同步不是更好么?
如果所有可能访问它的方法都做了线程同步,而vector的方法本身也做了同步,此时是不是多此一举了? 但如果有别的对象也需要多线程访问,方法都做了线程同步,就留一个vector对象不去管,程序看起来会不会很奇怪?
------解决方案--------------------------------------------------------
现在更多使用 ArrayList,vector不被推荐使用了吧?
------解决方案--------------------------------------------------------
Vector是线程安全的,也就是说是同步的,而ArrayList是线程序不安全的,不是同步的。
Vector本身为了多线程访问,就已经做了同步的操作,例如锁操作。当线程再为了Vector做同步时,显得多此一举。如果多个线程对这个Vector的同步没做好,有可能出现死锁等问题。所以当多线程访问Vector时,无需再考虑同步的问题。
对于你的3个问题,回答如下:
1. 可以,但不是更好。
2. 是。
3. 不会。