若使用sleep(1000),则中断状态被清除,那么this.isInterrupted没有效果
2017-05-11
已采纳回答 / Mad_Man_
wait()方法是让线程释放对象锁,让其他线程拿到锁之后去优先执行,当其他全程唤醒wait()中的线程 或者 拿到对象锁的线程都执行完释放了对象锁之后,wait()中的线程才会再次拿到对象锁从而执行。
2017-05-10
synchronized关键字的作用是对一个对象或者是方法(其实还是持有这个方法的对象)加上锁,加锁实质上是取得对象的访问权限,如果对象已经被其他者所加锁,那么请求者就只好进入等待队列(休眠),知道被其他线程使用nodify方法唤醒。在被加锁的代码块当中,可能会出现一些情况,使得代码需要一些条件才能继续运行,此时为了让这个代码块能够被其他的线程执行到,必须释放锁,nodify方法除了唤醒其他的线程,并把锁交给它之外还有释放锁+让自己休眠的作用。
2017-05-08
interrupt方法是用来唤醒被阻塞的线程的,如果线程使用了wait, sleep, join方法,那么线程就会进入阻塞状态,使用interrupt方法会终止这种状态,此时线程的sleep等方法下面的catch语句就会接收到这个打断,从而启动线程,继续做要做的事情。如果线程在阻塞之前使用interrupt方法,那么在阻塞的时候,会抛出异常,并把中断标志位设置成false。
2017-05-07