已采纳回答 / 黄子衣
解释:当线程1将piao()方法调入栈中执行时,线程2也将piao()方法调入栈中执行,但是由于piao()方法被锁所以线程2处于等待,然而此时线程2已经读取了内存中的 x 的值,所以当线程1执行完成虽然修改了 x 的值,但是由于线程2已经读取了 x 的值,所以修改后的 x 的值并没有被线程2读取。注意:1、可以给x添加volatile修饰符,这样线程就能读取正确的值 2、一般情况下对于并发共享的类最好不要拥有状态,容易出现并发问题
2017-06-14
最赞回答 / 慕婉清0689395
因为ArmyRunable类继承了runnable接口,而且thread中有一个构造方法可以通过runnable对象去实例化一个thread对象,所以我们可以用ArmyRunnable类去进行父类引用子类对象去实例化一个runnable对象,最后得到thread对象当然可以调用Thread.CurrentThread 方法和yield() 方法啊。
2017-06-08
已采纳回答 / 慕婉清0689395
因为子类重写了父类的run方法,父类对象不能调用子类的重写的run方法;也可以通过父类对象去引用子类对象去实现调用子类的run方法Thread actor = new Threadx();
2017-05-12
已采纳回答 / Mad_Man_
wait()方法是让线程释放对象锁,让其他线程拿到锁之后去优先执行,当其他全程唤醒wait()中的线程 或者 拿到对象锁的线程都执行完释放了对象锁之后,wait()中的线程才会再次拿到对象锁从而执行。
2017-05-10