为了账号安全,请及时绑定邮箱和手机立即绑定

最赞回答 / 程序员北巷
下面Actress加上statci就可以了,提问不能删除,就自己回了

最赞回答 / 正方形企鹅
声明:解释转自 sxian_wang 的回答先明白两个概念:锁池和等待池。synchronized是锁池,wait、notify、notifyAll是等待池。等待池的对象是不会竞争锁的,当notifyAll后,等待池中的线程会被唤醒进入到该线程的锁池中重新竞争对象锁,重新获得锁后的对象会从wait后继续执行代码,其他对象会被阻塞,而不是wait。被阻塞的对象会等待下一次被唤醒(notify、notifyAll)。另外,notify不是线程安全的,notifyAll才是。

最赞回答 / 我梦寐以求是真爱与自由
Thread.sleep(50)的作用是让stage()这个线程休眠五十毫秒,写在Thread.sleep(50)后面的就是终止条件,表面来看整个逻辑确实很奇怪,因为你发现一整套下来线程跑的次数比你想象中的多的多。而真正让线...

最赞回答 / KingAmo
其他线程在他的start()方法执行后,并没有立即获得cpu时间,所以里面的run()方法没有立即执行,等到stage线程让出cpu时间后才会执行。但是你没休眠,stage线程会执行到赋值keeprunning为false,stage线程这时让出cpu时间,其他线程再试行,但已经不会打印输出语句了。如果你有休眠,stage线程执行到休眠时就让出了cpu时间,后面的给keeprunning赋值没有执行,所以可以打印、

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

最新回答 / 蜡笔小狗
军队不是接口,军队只是实现了接口的类

最赞回答 / 慕婉清0689395
因为ArmyRunable类继承了runnable接口,而且thread中有一个构造方法可以通过runnable对象去实例化一个thread对象,所以我们可以用ArmyRunnable类去进行父类引用子类对象去实例化一个runnable对象,最后得到thread对象当然可以调用Thread.CurrentThread 方法和yield() 方法啊。

最新回答 / 我爱孙佳怡
主线程循环开了100个线程,在主线程循环完之后,100个线程就开始争内存了,所以第2个线程不是1,而是100内随机一个

最新回答 / qq_word哥_2
看结果看不到什么要看代码
课程须知
本课程的学习,需要小伙伴们具有面向对象基础知识及 Java 语言基础。如果您是新手,建议先移步 《Java入门第一季》和《Java入门第二季》
老师告诉你能学到什么?
1、Java 中如何使用线程 2、什么是争用条件 3、线程如何交互

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?

举报

0/150
提交
取消