关于join

关于join

测试类中save用了join()方法,而join方法不是当前线程优先执行,直到结束,其他线程才可以执行吗,既然这样怎么会出现运行中止的现象呢

正在回答

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

2回答

同学你好,save()方法balance-=200执行后,cpu被其他线程抢占,当再次获得CPU时,setbalance()就会执行。join()方法有线程优先执行的效果,但是没有synchronied的效果。

例如:

http://img1.sycdn.imooc.com//climg/5edf609509ff91a105550621.jpg

运行效果如下:

http://img1.sycdn.imooc.com//climg/5edf602309943dcc03380309.jpg

取款200,存款100,最后账户上余额是1100。线程并不是同步的。

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

好帮手慕阿慧 2020-06-09 16:54:14

同学你好,

1、不是的。线程的执行是随机的,看哪个线程先抢占cpu资源,无法保证优先级高的就一定会先执行,但是可以通过设置线程优先级来提高优先级高的线程优先执行的概率。

2、同学说的运行中止的现象是什么呢?建议同学详细描述一下问题,同学可以贴一下代码和运行截图。

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

  • 提问者 慕UI2433440 #1
    我说的中止就是save()方法balance-=200执行后,cpu被其他线程抢占,导致setbalance()未执行,我的意思是join()方法难道不是既有线程优先执行的效果,也有synchronied的效果吗
    2020-06-09 17:13:39
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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