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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑马-雷钊 中级黑马   /  2013-5-8 15:27  /  1952 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 黑马-雷钊 于 2013-5-9 23:27 编辑

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

评分

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

查看全部评分

7 个回复

倒序浏览
Synchronized(监视对象){
这里边是需要同步的代码块。

}

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

如果是多个线程。在没有实现同步的情况下,可能有这样的情况出现:
    Thread-0执行到执行语句1后,Thread-1到了,那么Thread-0就被迫跳出。Thread-1就开始执行了

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报
锁可以加在方法上,也可以加在特定的代码上,但有一点要明确,加锁的必须是共享数据。

回复 使用道具 举报
同不锁是,让多条语句在一个目标中执行, 同步代码块是用的是相同的锁,定义成,私有成员就可以, 如过是静态的,用类名点class,  是同步方法是,锁是this,因为在编译的时候, 那些成员的属性,和方法都没有加载到内存中,  所以就用自己的类名点class, 简写就是this

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报
Super_Class 发表于 2013-5-8 23:49
Synchronized(监视对象){
这里边是需要同步的代码块。

谢谢  貌似有点懂了   多线程就这块就点纠结
回复 使用道具 举报
て淡莣了陌生 发表于 2013-5-9 15:51
同不锁是,让多条语句在一个目标中执行, 同步代码块是用的是相同的锁,定义成,私有成员就可以, 如过是静态的, ...

谢谢。。辛苦了
回复 使用道具 举报
如果问题解决了,请将分类改为“已解决”,谢谢
回复 使用道具 举报
恩  好的  版主  容我研究研究怎么改哈   第一次呢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马