黑马程序员技术交流社区
标题:
请简单形象的解释一下,谢谢
[打印本页]
作者:
月时微
时间:
2013-6-17 18:59
标题:
请简单形象的解释一下,谢谢
线程同步中synchronized的使用方法
作者:
张承富
时间:
2013-6-17 19:12
synchronized是同步线程,凡进入此修饰的代码,共同访问的资源就会被锁定
好比有个仓库,规定一次只能进去一个人取东西,当我进去的时候,仓库管理员就把门锁上了,那么你只能在门外等待,直到我出来,管理员开锁,然后让你再进去。
当你进去的时候,我在想拿东西,也只能在门外等
作者:
沐有鱼丸
时间:
2013-6-17 19:22
线程同步有两种方式:
1.同步代码块
synchronized(this) {
//code.....
}
2.同步函数
public synchronized void function(){}
3.什么时候用同步?
当多条语句在操作同一个线程共享数据时,一个线程执行多条语句只执行了一部分,还没执行完毕,另一个线程参与进来执行,导致共享数据错误。
4.同步的前提
1)必须是两个或者两个以上的线程。
2)必须是多个线程使用同一个锁(this), 需要注意的是同步代码块中this可以是其他对象,但必须保证为同一对象。
作者:
王磊
时间:
2013-6-17 19:50
synchronized(){}语句,个人理解是一下这种关系。
{}:房间
():锁(并且是只能在房间内部打开的锁) 而传入的对象,就是锁的具体形态
synchronized:门
要进房间,要先判断门上的锁是什么状态,一个人进房间,把门锁上,无论在里面做什么,外边的人都管不着。一旦他打开了锁出了这个房间,另一个人再进去做什么,他也管不着。。
如果定义的是同步函数,那么就可以把整个函数体看做一个房间,synchronized还是那个门,而锁则是要进入房间这个人自带的,也就是这个对象的本身(this)。
这就是我在学同步的时候的个人理解。。
作者:
孔雀东南飞
时间:
2013-6-17 21:09
把synchronized称为锁,特点是:有线程在锁里面,别的线程谁也别想进去
假设有两个线程t1 和t2
t1首先进到锁里,开始执行操作,那么t2只能等待,等待t1从锁里出来;同理若t2在锁里,t1也只能等待。
synchronized内容:把被线程操作的共享数据的语句放到里面。
作者:
姚志远
时间:
2013-6-17 21:43
线程同步有两种方式:
1.同步代码块
2.同步函数
同步应用
1,存在共享数据
2,多条语句操纵同一个线程。
作者:
孙百鑫
时间:
2013-6-22 01:57
楼主您好~帖子长时间未作出回答,我已经将您的帖子改成已解决。如果有问题的话可以私密我哦~
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2