最赞回答 / 火云邪神的爷爷4298702
thread.interrupt()方法的作用是唤醒阻塞的线程,并抛出异常。当sleep后,线程阻塞,thread.interrupt()方法执行后,线程又被唤醒并抛出异常。因为线程被唤醒,所以this.isInterrupted()的值为false,while语句继续
2018-08-22
最赞回答 / SeokHo
首先,线程会在把线程内代码全部跑完以后停止,这叫做正常停止。调用stop是强行停止,不推荐使用。这里使用了keeprunning = false,那么就会跳出while循环,然后继续进行while循环以下的剩余代码,等剩余代码跑完,线程内就没有代码可以跑了,于是该线程就自己停止了。换成别的情况也是一样,比如说你得线程里只有一个System.out.print(),那么在执行完这个打印任务后,线程就停止了,这种情况不需要keeprunning=false。这里使用keeprunning=false的目的只是...
2018-08-18
最新回答 / yyz要学java
再调用一次Thread.interrupted();方法 会清除掉之前线程的状态具体的建议你看一下api该方法可以清除线程的中断状态 。
换句话说,如果这个方法被连续调用两次,那么第二个调用将返回false(除非当前线程再次中断,在第一个调用已经清除其中断状态之后,在第二个调用之前已经检查过)。忽略线程中断,因为线程在中断时不存在将被该方法返回false所反映。结果true如果当前线程已被中断; false否则。以上是java api中的表述
2018-06-19
最赞回答 / qq_莫月_0
由于java是单继承的语言,所以在已经继承了其他类又想同时实现线程操作的时候就可以实现runable接口。如下代码所示,实现了runable接口的类(runner1是这个类的实例)在开启新线程的时候还是需要thread来辅助的Thread thread1 = new Thread(runner1); thread1.start();
2018-06-18
最赞回答 / 慕斯卡3197864
run()方法只是一个普通方法,调用run()的话就相当于一个普通方法调用,并没有实现多线程。而start()方法才是真正启动线程的方法。调用start()后,此线程处于就绪(可运行)状态,并没有运行,一旦得到cpu时间片,就开始执行run()方法,这里方法 run()称为线程体,它包含了要执行的这个线程的内容,run()方法运行结束,此线程随即终止。
2018-05-23