已采纳回答 / 风云7857
如下:wait():使一个线程处于等待状态,并且释放所持有的对象的lock;sleep():使一个正在运行的线程处于睡眠状态,是一个静态方法,调用此方法要捕捉InterruptedException异常;notify():唤醒一个处于等待状态的线程,注意的是在调用此方法的时候,并不能确切的唤醒某一个等待的线程,而是由JVM确定唤醒哪个线程,而且不是按优先级;notityAll():唤醒所有处于等待状态的线程,注意并不是给所有唤醒线程一个对象的锁,而是让他们竞争。
2016-06-20
已采纳回答 / 1533687848
就等于是你在等待办业务,在办业务的这个办公室只能有一个人进去,lockObj对象就等于这个办公室,外面等待的人就是这个办公室所拥有的wait set,当一个人办完业务时,办公室会通知所有等待的人说可以进去了,那么这外面等待的所有的人就都同时获得了平等的竞争进入办公室的权力。
2016-06-01
已采纳回答 / 萌萌哒猫头鹰
在舞台这个线程里面将两个军队线程对象的KeepRunning属性设置为false,从而结束了两个军队线程。<...code...>在军队线程里面,keepRunning需用volatile修饰,表示它可以被不同线程访问和修改。即:<...code...>
2016-05-05
已采纳回答 / Wayaye
线程3在没有争夺到锁的情况下肯定不会进入Wait Set等待了。这和你刚开始说的当线程1争夺到锁,而2、3没有争夺到时情况应该是一样的,CPU应该是还没有机会执行这条线程。一家之言。
2016-05-02
已采纳回答 / meersun
在A线程中调用了B线程的join方法,意思是直到线程A执行完毕后才会执行线程B,所以这里的join只对舞台线程起作用。对起义军和隋军线程,程咬金的join方法根本不起作用。我试了下,把keepRunning设为false的语句注释掉,发现即使加上chengyaojin.join(),这两个线程也不会停止,会一直运行下去。
2016-04-26
已采纳回答 / qq_等风来_32
第一个问题 :隋军的线程的start()在农民军的start()之前,那么就是隋军先启动,但是这不意味他就能先得到CPU,启动之后能不能得到cpu不一定第二个基本是这个意思,留给军队更多的执行时间,你可以注释掉50毫秒看看运行结果,就能明白了,会发现军队的执行次数会少很多
2016-04-06
已采纳回答 / Tong丶code
互斥:通常表现在多个线程竞争同一资源,比如这里只有一只笔,同时有几个人要进行签到,但资源(笔)唯一,线程(人)之间就存在竞争关系,并且同一时间只有一个线程(人)能够持有这个资源(笔)。同步:同步就是协同步调,按预定的先后次序进行运行,如进程、线程同步,可理解为进程或线程A和B一块配合,A执行到一定程度时要依靠B的某个结果,于是停下来,示意B运行;B依言执行,再将结果给A;A再继续操作。(来源于百度百科)
2016-04-04
已采纳回答 / 慕粉3131963
感觉是不可以的吧,,我也是初学。不调用notify方法会导致等待区里的线程一直得不到释放,最终是否会导致等待区里的线程积压,运行的线程越来越少
2016-04-03
已采纳回答 / meersun
一直可以这样简写,因为你分成两步也一样,这里的s你还得给起个名字,而且这个名字以后也用不到。所以直接简写就可以。如果这个stage名字以后还要用,那就必须分开写了。
2016-03-22