章节
问答
课签
笔记
评论
占位
占位
今日不再显示
Arthur
JAVA开发工程师

高级JAVA软件工程狮,典型的程序猿,长期奋战在开发一线,了解行业开发实际。同时爱叨叨,喜分享,善于用简单的生活化例子讲解复杂的技术问题,化繁为简,助人为乐。

提问题

写笔记

代码语言
公开笔记
提交
加群二维码

打开微信扫码自动绑定

您还未绑定服务号

绑定后可得到

  • · 粉丝专属优惠福利
  • · 大咖直播交流干货
  • · 课程更新,问题答复提醒
  • · 账号支付安全提醒

收藏课程后,能更快找到我哦~

使用 Ctrl+D 可将课程添加到书签

邀请您关注公众号
关注后,及时获悉本课程动态

举报

0/150
提交
取消
全部 精华 我要发布

最新回答 / Java练习生
都是中文译版

最新回答 / 追着日落
<...code...>

已采纳回答 / 黄子衣
解释:当线程1将piao()方法调入栈中执行时,线程2也将piao()方法调入栈中执行,但是由于piao()方法被锁所以线程2处于等待,然而此时线程2已经读取了内存中的 x 的值,所以当线程1执行完成虽然修改了 x 的值,但是由于线程2已经读取了 x 的值,所以修改后的 x 的值并没有被线程2读取。注意:1、可以给x添加volatile修饰符,这样线程就能读取正确的值          2、一般情况下对于并发共享的类最好不要拥有状态,容易出现并发问题

已采纳回答 / Mad_Man_
wait()方法是让线程释放对象锁,让其他线程拿到锁之后去优先执行,当其他全程唤醒wait()中的线程 或者 拿到对象锁的线程都执行完释放了对象锁之后,wait()中的线程才会再次拿到对象锁从而执行。

已采纳回答 / 田心枫
百度找找  有扫描版本的

已采纳回答 / 乱星海
三个方法里至少有一个是notifyAll。假设三个都是notify(),当方法c运行完后,flag为1,此时如果a和b都已经在Wait Set中,且随机唤醒的是b,那么b随机又进入Wait set,c也进入Wait set,此时三个线程全部进入Wait set,造成了死锁。

已采纳回答 / 福山润
代码1:两个线程同时走,他俩公用一个FlagSender对象里面的flag,当线程t1走第一遍时,flag等于false,不等待直接输出,然后将falg致成true,线程t1等待,这时候线程t2 while里面的!f.isFlag() 为false,所以往下进行输出又将flag致成false,这时线程t1又开始执行。以此类推。代码2:两个对象都在while里面进行死循环,所以只打印一次。

已采纳回答 / 喜欢柯南的小小学徒
你的print2方法里,wait方法没有在if分支里。

已采纳回答 / qq_弑神S无尘
当年我学也没有,推荐一种写法private boolean flag=true;public void setFlag(boolean f ){flag=f;}在别的地方调用setFlag来改变标志。老师讲的关键字是什么时候出的我都不知道,我手边的书附录java关键字表也没有它

+ 我来回答 回答最高可+2积分

已采纳回答 / Arthur
我推荐的书都有中文版的。
全部 我要发布
最热 最新
只看我的

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?

账号登录 验证码登录

遇到问题
忘记密码

代码语言