最贊回答 / 火云邪神的爺爺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