已采纳回答 / 是王小二呀
第一:创建线程只有继承Thread类和实现Runnable接口两种方式(Thread也是实现了Runnable接口);第二:若以继承Thread类方式创建线程则这个类的实例就可以重写Thread类的几十个方法,注意是好几十个方法;第三:若以实现Runnable接口的方式创建线程则仅仅只有一个run()方法可供重写;注意是只有一个; 实现Runnable接口创建的线程最终还是要通过将自身实例作为参数传递给Thread然后执行,当你要为一个没有继承Thread类的类创建线程,而且只想让这个类的实例调用r...
2015-12-22
已采纳回答 / 惫懒sloth
Thread.sleep();这个方式是使得当前在运行的线程休眠,作用就是让 Stage休眠,如果单纯的 Stage.sleep()是没有这个方法的。
2015-12-18
已采纳回答 / 乔小欠儿
Stage的run方法里有armyOfFarmer.join();这句。这句的意思是说农民的run方法执行完了才能往armyOfFarmer.join();这句代码之后运行。但你看看你的ArmyRunnable的run方法里,while (keepRunning)的keepRuning一直是true,...
2015-12-18
已采纳回答 / sxian_wang
不会,主要是这样的:先明白两个概念:锁池和等待池。synchronized是锁池,wait、notify、notifyAll是等待池。等待池的对象是不会竞争锁的,当notifyAll后,等待池中的线程会被唤醒进入到该线程的锁池中重新竞争对象锁,重新获得锁后的对象会从wait后继续执行代码,其他对象会被阻塞,而不是wait。被阻塞的对象会等待下一次被唤醒(notify、notifyAll)。另外,notify不是线程安全的,notifyAll才是。
2015-12-09
已采纳回答 / sxian_wang
其实就是this.getName();这个类是Thread的成员函数,这个方法在Thread中已经实现了,所以在子类中可以直接调用。这两种写法没有本质上的区别,都是指当前对象的xxxx。在实际开发中,加不加this,我没有查到有一种确切结论,更多是个人习惯吧。不过貌似在访问当前对象的属性(变量)的时候一般多用this;而在对象内部调用非静态方法时不用this,直接用函数名调用。
2015-11-30
已采纳回答 / 风拔萝卜
这个要分情况的。如果你是用的实现Runnable类的方式的话可以直接使用this,而如果是使用继承Thread的方式时就不要使用this,因为此时this指向不同对象,这样每个线程都拥有自己的锁,无法实现同步
2015-11-27
已采纳回答 / 转变者
这里不一样的呀!public class ActorCopy extends Threadclass Actress implements Runnable
2015-11-11
已采纳回答 / 天启之魂
如果使用if 那么判断标记后,线程等待然后被唤醒 会直接执行下面的语句,但是可能这时条件是不成立的所以需要重新判断条件 使用while就可以重复判断标记
2015-10-28
已采纳回答 / 天启之魂
没看到你别的代码,也没看这个题目,不知道具体问题, 但是就你出现的那个问题,notify是唤醒线程池中的任意一个线程,当你的读和取都有多个线程时,有使用的同一个锁,确实会造成死锁,JDK1.5 java.util.concurrent.locks 包中提供了更方便的灵活的解决办法 java.util.concurrent.locks包下 Lock接口:代替了同步代码块或者同步函数,将同步的隐式锁操作变为了显示操作,而已可以加上多个监视器,Condition接口中signal();唤醒锁上指定监...
2015-10-11
已采纳回答 / 淡彩Sone
run方法只是方法体里是你需要执行的业务逻辑。while(true)当然条件为真,那么循环必定永远执行下去。跑不出去?对啊!思路没错的,里面条件为真的循环一直在走,那么run就没有走到方法体最后一行的机会,那么run方法永远不结束,线程也不会结束。你说的是课程里那个能量守恒吧?时间在变,能量在变,所以以现实世界的逻辑套用到程序,那么就是一个永久的执行过程,没有停止的,除非宇宙大爆炸?那也不一定,炸完了能量转移了也不一定,也还没完。。。
2015-08-27