黑马程序员技术交流社区

标题: 多线程的锁。 [打印本页]

作者: 黑马-雷钊    时间: 2013-5-8 15:27
标题: 多线程的锁。
本帖最后由 黑马-雷钊 于 2013-5-9 23:27 编辑

多线程中为了提高代码的安全性。可以用synchronized锁来控制线程一次只能进去一个。但锁要定义在什么地方好呢?还有。主函数同步的锁是this。但那个this是怎么求得的呢?

作者: Super_Class    时间: 2013-5-8 23:49
Synchronized(监视对象){
这里边是需要同步的代码块。

}

加入 有一个add方法  
add(){
执行语句1;
执行语句2;
执行语句3;
。。。。
}

如果是多个线程。在没有实现同步的情况下,可能有这样的情况出现:
    Thread-0执行到执行语句1后,Thread-1到了,那么Thread-0就被迫跳出。Thread-1就开始执行了
作者: 潘贵    时间: 2013-5-9 00:35
锁可以加在方法上,也可以加在特定的代码上,但有一点要明确,加锁的必须是共享数据。


作者: て淡莣了陌生    时间: 2013-5-9 15:51
同不锁是,让多条语句在一个目标中执行, 同步代码块是用的是相同的锁,定义成,私有成员就可以, 如过是静态的,用类名点class,  是同步方法是,锁是this,因为在编译的时候, 那些成员的属性,和方法都没有加载到内存中,  所以就用自己的类名点class, 简写就是this
作者: 黑马-雷钊    时间: 2013-5-9 18:12
Super_Class 发表于 2013-5-8 23:49
Synchronized(监视对象){
这里边是需要同步的代码块。

谢谢  貌似有点懂了   多线程就这块就点纠结
作者: 黑马-雷钊    时间: 2013-5-9 18:12
て淡莣了陌生 发表于 2013-5-9 15:51
同不锁是,让多条语句在一个目标中执行, 同步代码块是用的是相同的锁,定义成,私有成员就可以, 如过是静态的, ...

谢谢。。辛苦了
作者: 黄玉昆    时间: 2013-5-9 21:43
如果问题解决了,请将分类改为“已解决”,谢谢
作者: 黑马-雷钊    时间: 2013-5-9 23:22
恩  好的  版主  容我研究研究怎么改哈   第一次呢




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2