Java线程总结(下)

发表于:2010-8-25 10:00

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:未知    来源:51Testing软件测试网采编

分享:

  下面是其中一次的执行结果:

  ---------first--------------

  Husband 向银行存入了 [¥1000]

  Wife 向银行取走了 [¥1000]

  Wife 向银行取走了 [¥1000]

  Husband 向银行存入了 [¥1000]

  Wife 向银行取走了 [¥1000]

  Husband 向银行存入了 [¥1000]

  Wife 向银行取走了 [¥1000]

  Husband 向银行存入了 [¥1000]

  Wife 向银行取走了 [¥1000]

  Husband 向银行存入了 [¥1000]

  Husband 向银行存入了 [¥1000]

  Wife 向银行取走了 [¥1000]

  Husband 向银行存入了 [¥1000]

  Husband 向银行存入了 [¥1000]

  Wife 向银行取走了 [¥1000]

  Wife 向银行取走了 [¥1000]

  Husband 向银行存入了 [¥1000]

  Wife 向银行取走了 [¥1000]

  Wife 向银行取走了 [¥1000]

  Husband 向银行存入了 [¥1000]

  看到了吗,这可不是正确的需求,在husband还没有结束操作的时候,wife就插了进来,这样很可能导致意外的结果。解决办法很简单,就是将对数据进行操作方法声明为synchronized,当方法被该关键字声明后,也就意味着,如果这个数据被加锁,只有一个对象得到这个数据的锁的时候该对象才能对这个数据进行操作。也就是当你存款的时候,这笔账户在其他地方是不能进行操作的,只有你存款完毕,银行管理人员将账户解锁,其他人才能对这个账户进行操作。

53/5<12345>
重磅发布,2022软件测试行业现状调查报告~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2023
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号