有个问题一直没弄清楚,synchronized(同步)的具体意思的什么,Vector和ArrayList最大的区别好像就是Vector是synchronized了的.但我还是不明白,到底有什么不一样.

解决方案 »

  1.   

    synchronized就是线程同步的,也就是线程安全的
    在synchronized中的代码或者是函数,必需是一起被cpu调度执行的,中间不能打断
    也就是具有原子性。
      

  2.   

    这就好像是你带着全家去饭馆吃饭,吃饭不是赶火车,当然不可能一分钟搞定了,比如吃个3个小时吧。这时候又来了一些客人,但是由于你们吃饭这个动作被synchronized了,所以他们不能打断你。相反如果不做线程同步,他们可能会在你们没吃完的时候把你们赶走,当然也不是真赶走,一会儿你们还能回来继续吃,然后再被赶走。总之你们两家是要一起享用那张桌子了。
      

  3.   

    这就好像是你带着全家去饭馆吃饭,吃饭不是赶火车,当然不可能一分钟搞定了,比如吃个3个小时吧。这时候又来了一些客人,但是由于你们吃饭这个动作被synchronized了,所以他们不能打断你。相反如果不做线程同步,他们可能会在你们没吃完的时候把你们赶走,当然也不是真赶走,一会儿你们还能回来继续吃,然后再被赶走。总之你们两家是要一起享用那张桌子了。
    =================================================
    这个例子形象...呵呵
      

  4.   

    synchronized能保证线程同步,也就是线程a执行的时候会处于锁定状态,等执行完其他线程才能执行。这样当然要比不用同步的费时间,也就是效率低了。也就是lz说的Vector和ArrayList的区别。还有hashmap和hashtable也是这样
      

  5.   

    每个对象都有1个锁,SYNCHRONAZIED了就是激活这个锁,没有不同