已采纳回答 / 小娜子
调用sleep()阻塞当前线程,当其他线程调用interrupt()的时候,sleep()会发生InterriptedException()中断异常,并清除中断状态。System.currenttime - time)<1000是if的判断条件,当这个值小于1000时进入if()代码块执行程序。
2016-07-13
已采纳回答 / _布袋馍_
join()方法是终止其他线程,优先完成本线程。这个代码只有两个线程在竞争CPU。一个进行完不就只剩下一个线程了嘛 没必要在写多余的代码了 如果线程多了 就可以多写几个join()方法了。
2016-07-10
已采纳回答 / krisleo
Thread 是一个类只能继承后,复写run方法后,生成线程类对象调用start方法就可以实现线程的运行。Runnable是一个接口,里面只有一个run方法,只有实现(implement)这个接口后,必须复写run方法才能运行,步骤和Thread是一样的,一般用Runnable比较多
2016-07-07
已采纳回答 / 罗曼蒂轲
cpu的执行时分时的,比如你电脑现在开启了三个程序ABC,。CPU在这三个程序之间不停的切换执行,由于速度很快,你觉得它们是一起执行的,执行ABC不一定是按顺序的,也可能是A>C>A>B>B>B>C>A>B>A,所以会出现随机性的交替执行
2016-07-04
已采纳回答 / 玄鉴
我感觉是一样的,都是占着锅里的,渴望对方碗里的,还死不想让,结果导致被占着的厕所永远被这两个人占领,其他人都无法正常使用。除非关闭停止运行程序,大家都去睡觉,不然这两个线程将永远处于死锁状态。而且第二天还是有可能再次出现这种情况的,不过概率很小而已。
2016-06-21
已采纳回答 / 风云7857
Thread.sleep()使当前线程在指定的时间处于“非运行”(Not Runnable)状态。线程一直持有对象的监视器。比如一个线程当前在一个同步块或同步方法中,其它线程不能进入该块或方法中。如果另一线程调用了interrupt()方法,它将唤醒那个“睡眠的”线程。注意:sleep()是一个静态方法。这意味着只对当前线程有效,一个常见的错误是调用t.sleep(),(这里的t是一个不同于当前线程的线程)。即便是执行t.sleep(),也是当前线程进入睡眠,而不是t线程。t.suspend()是过时的方...
2016-06-21
已采纳回答 / 风云7857
如下:wait():使一个线程处于等待状态,并且释放所持有的对象的lock;sleep():使一个正在运行的线程处于睡眠状态,是一个静态方法,调用此方法要捕捉InterruptedException异常;notify():唤醒一个处于等待状态的线程,注意的是在调用此方法的时候,并不能确切的唤醒某一个等待的线程,而是由JVM确定唤醒哪个线程,而且不是按优先级;notityAll():唤醒所有处于等待状态的线程,注意并不是给所有唤醒线程一个对象的锁,而是让他们竞争。
2016-06-20