集合分为两类:Collection和Map,其中Collection的子类有Llist(子类有ArrayList,Vector,LindedList)和Set(子类有HashSet,TreeSet),而Map的子类有HashMap,TreeMap,HashTable.
在JDK1.5之前的集合都是线程安全的,如Vector和HashTable,其他的集合都是JDK1.5之后出现的,是线程安全的。
线程的安全是指多个线程同时对一个线程操作时,操作这个对象的方法加了锁机制,那么在一个时间段内只能有一个线程操作这个这个方法,其他的线程必须处于等待状态,只有操作的线程完成任务后释放了锁后其他的线程才可以进入这个方法进行操作。线程不安全是多个线程在一个时间段可以同时操作同一个对象,这样会造成数据错误,如卖火车票当火车票的张数为0时就不可以卖了,而由于多个线程同时操作,当一个线程把张数改为1时恰在这时这个线程正要对张数进行输出但另外一个线程又把张数改为了0,这时如果刚才的那个线程再次抢到执行权时就会接着上次的操作输出张数是0.这是不对的。 |