A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© 李大伟 高级黑马   /  2013-4-29 10:25  /  1259 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 李大伟 于 2013-4-30 09:20 编辑

比如 StringBuilder 和 StingBuffer
--ArrayList  和Vector
--Hashtable  和  --HashMap
线程同步和不同步,求详解  

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

7 个回复

倒序浏览
线程同步按我的理解!
多线程的程序!一段代码被多个程序同时操作,同步的话就是在共享代码处加一把锁,只要里面有一个线程在运行,其他线程就不能进去!
必须等那个线程出了同步代码之后!其他线程才能进去执行!
一般多线程应用程序,只要操作共享数据都要加同步,而且同步的那个锁还必须是同一把锁!
希望能帮到你!

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
线程同步的目的是为了保护多个线程访问一个资源时对资源的破坏,但会稍微降低效率
回复 使用道具 举报
本帖最后由 吴波 于 2013-4-29 12:24 编辑

同步的前提:
                a.必须要有两个或者两个以上的线程
                b.必须是多个线程使用同一人锁
       
        必须保证同步中只能有一个线程在运行

        好处:解决了多线程的安全问题
       
        不足:多个线程需要判断锁,较为消耗资源

1.5版本之后出现的,用于替换StringBuffer,提高效率,以后开发,建议使用StringBuilder

        StringBuffer是线程同步,多线程的情况一般用StringBuffer
        StringBuilder是线程不同步,单线程的情况一般用StringBuilder

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
用张孝祥老师的例子,这个就好比上厕所(前提是只有一个坑,这个就像synchornized操作的是同一个对象,否则的话,不能线程互斥)
同步:
    一群人上厕所,第一个进去,把门关上,后面的人只能在外面排队,只有等第一个人出来了,第二个人才能进去。线程同步就是这样,当一个线程在进行操作时,其他线程在外面等着,当这个线程执行完毕或thread.wait()时,第二个线程会进入,就像火车购票系统一样
不同步:

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
不同步,就不用说了吧
最大区别:
同步:效率低,但是安全
不同步:效率高,但是不安全
回复 使用道具 举报
比如说现在有一份文件,你可以读,也可以写。但是如果你在读的时候写,就会使读写的内容不一致。而读和写的动作,不可以同步。也就是说,同步你可以当它们是同时发生的。而同步代码块,是为了防止因同步而发生的问题,从而使他们不在同一时间发生
回复 使用道具 举报
晕了,不知道哪个是正解
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马