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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑马薛有义 黑马帝   /  2011-7-24 20:31  /  3179 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

一个类的两个方法同时操作一个成员变量的时候可能需要加同步,还有什么情况需要加同步呢?????

3 个回复

倒序浏览
黑马网友  发表于 2011-7-24 20:44:14
沙发
在多线程的情况下需要用到,某一时刻只能一个线程进行操作并改变它的值,你就要用这个关键字来约束。来保证线程安全,例如,张老师在讲多线程的时候,讲过的铁路售票系统。

评分

参与人数 1技术分 +1 收起 理由
小龙 + 1 只能加一分!

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-7-24 21:19:23
藤椅

关于多线程同步

应该是存在多线程安全问题的地方,都需要同步。如果程序没有多线程安全问题,就不应该使用同步技术,因为源程序调用同步方法,会调用额外的监视器检查,这样会降低运行效率。

评分

参与人数 1技术分 +1 收起 理由
小龙 + 1 只能加一分!

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-7-24 21:24:47
板凳
那取款机来说,如果它为每个帐户提供一个取钱方法和一个存钱方法,然后假设一个你和某个人同时用一个帐号去取款,这时如果存钱和取钱方法不实现synchronized的话很能你刚进去这个取钱方法里然后你的线程在cpu的时间到了轮换到另一个取钱的人,他也进入了这个方法,这样就有可能你们俩个都能用一个帐号取出钱来.当然如果那个帐号里面只有500大洋而你们俩个又同时取500的话是木有问题的.这样银行可定就亏了.所以类似这样的方法在多线程中就要用synchronized或用Lock 去实现同步 这样 如果一个线程进入了取钱方法中在轮换到其他线程时,那个线程就进不去这个方法直道进取方法的那个线程运行完.所以这样才能安全

评分

参与人数 1技术分 +2 收起 理由
小龙 + 2 不错!比较详细的说明!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马