我看了一个贴子讨论,很多人都说Vector是线程同步的,需要多线程的情况下用它。当然arrayList也可以支持多线程。我想问的是,多线程的情况下,如果自己有一个vector对象会被从个线程访问,自己直接对访问它的方法做同步不是更好么?
如果所有可能访问它的方法都做了线程同步,而vector的方法本身也做了同步,此时是不是多此一举了? 但如果有别的对象也需要多线程访问,方法都做了线程同步,就留一个vector对象不去管,程序看起来会不会很奇怪?
如果所有可能访问它的方法都做了线程同步,而vector的方法本身也做了同步,此时是不是多此一举了? 但如果有别的对象也需要多线程访问,方法都做了线程同步,就留一个vector对象不去管,程序看起来会不会很奇怪?
2.线程跟同步没有必然联系。
3.Vector中的同步会在你做非同步操作时抛出异常。
4.lz你可以写你的同步,但是效率绝没有Vector原来的好。
Vector本身为了多线程访问,就已经做了同步的操作,例如锁操作。当线程再为了Vector做同步时,显得多此一举。如果多个线程对这个Vector的同步没做好,有可能出现死锁等问题。所以当多线程访问Vector时,无需再考虑同步的问题。
对于你的3个问题,回答如下:
1. 可以,但不是更好。
2. 是。
3. 不会。
一般都用arraylist
有线和安全性存在的情况用:Vector
如果你的程序没有多线程访问,用ArrayList就可以了,访问速度块;如果你的需要多线程访问,就使用 Vector ;人家提供的同步机制应该比我们自己写的好点啦,没有绝对啊