<p>Is there really that much of a difference between the performance of <code>Vector</code> and <code>ArrayList</code>?  Is it good practice to use ArrayLists at all times when thread safety isn't an issue?</p>

If thread safety is not an issue,
```
ArrayList
```
will be faster as it does not have to synchronize.  Although, you should always declare your variable as a
```
List
```
so that the implementation can be changed later as needed.
I prefer to handle my synchronization explicitly because a lot of operations require multiple calls.  For example:
```
```
if (!myList.isEmpty()) { 
    myList.get(0);
}
```
```
should be:
```
```
synchronized (myList) {
   if (!myList.isEmpty()) { 
       myList.get(0);
   }
}
```
```