黑马程序员技术交流社区
标题:
求解释 线程同步和不同步
[打印本页]
作者:
李大伟
时间:
2013-4-29 10:25
标题:
求解释 线程同步和不同步
本帖最后由 李大伟 于 2013-4-30 09:20 编辑
比如 StringBuilder 和 StingBuffer
--ArrayList 和Vector
--Hashtable 和 --HashMap
线程同步和不同步,求详解
作者:
$love
时间:
2013-4-29 10:59
线程同步按我的理解!
多线程的程序!一段代码被多个程序同时操作,同步的话就是在共享代码处加一把锁,只要里面有一个线程在运行,其他线程就不能进去!
必须等那个线程出了同步代码之后!其他线程才能进去执行!
一般多线程应用程序,只要操作共享数据都要加同步,而且同步的那个锁还必须是同一把锁!
希望能帮到你!
作者:
何锦权
时间:
2013-4-29 11:59
线程同步的目的是为了保护多个线程访问一个资源时对资源的破坏,但会稍微降低效率
作者:
吴波
时间:
2013-4-29 12:23
本帖最后由 吴波 于 2013-4-29 12:24 编辑
同步的前提:
a.必须要有两个或者两个以上的线程
b.必须是多个线程使用同一人锁
必须保证同步中只能有一个线程在运行
好处:解决了多线程的安全问题
不足:多个线程需要判断锁,较为消耗资源
1.5版本之后出现的,用于替换StringBuffer,提高效率,以后开发,建议使用StringBuilder
StringBuffer是线程同步,多线程的情况一般用StringBuffer
StringBuilder是线程不同步,单线程的情况一般用StringBuilder
作者:
肖宇宥
时间:
2013-4-29 14:09
用张孝祥老师的例子,这个就好比上厕所(前提是只有一个坑,这个就像synchornized操作的是同一个对象,否则的话,不能线程互斥)
同步:
一群人上厕所,第一个进去,把门关上,后面的人只能在外面排队,只有等第一个人出来了,第二个人才能进去。线程同步就是这样,当一个线程在进行操作时,其他线程在外面等着,当这个线程执行完毕或thread.wait()时,第二个线程会进入,就像火车购票系统一样
不同步:
作者:
肖宇宥
时间:
2013-4-29 14:11
不同步,就不用说了吧
最大区别:
同步:效率低,但是安全
不同步:效率高,但是不安全
作者:
pthuakai
时间:
2013-4-29 15:17
比如说现在有一份文件,你可以读,也可以写。但是如果你在读的时候写,就会使读写的内容不一致。而读和写的动作,不可以同步。也就是说,同步你可以当它们是同时发生的。而同步代码块,是为了防止因同步而发生的问题,从而使他们不在同一时间发生
作者:
李大伟
时间:
2013-4-29 19:46
晕了,不知道哪个是正解
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2