4-1线程同步

4-1线程同步

加了synchronized后,里面的sleep还有用吗,我删了之后发现也不影响结果的输出啊

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

synchronized当在方法前时是指在这个方法执行结束前,其他对象都不能调用该方法,包括其他线程,保证在同一时刻只能被一个线程访问。而sleep会让出cpu给其他线程,两者作用是不同的,这样才能实现交替执行。sleep()如果没有效果,可以把代码贴出来方便老师帮你查找原因。

  • weixin_慕容0194784 提问者 #1
    public synchronized void cunqian() { //获取余额 int money=getMoney(); try { Thread.sleep(1000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } money+=100; setMoney(money); System.out.println("存完钱的余额为"+getMoney()); } public void quqian() { synchronized(this) { int money=getMoney(); money-=200; try { Thread.sleep(1000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } 就是以上这个代码
    2019-04-11 16:14:53
  • irista23 回复 提问者 weixin_慕容0194784 #2
    sleep的时间比较短视觉上差异不大,你可以把时间改成Thread.sleep(5000);就可以看到去掉不去掉的差异了。另外quqian()方法中修改完money值还需要调用set方法修改帐户余额,输出取款后的帐户余额。
    2019-04-11 18:22:37
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师