Foo類實(shí)現(xiàn)了Runnable接口publicclassFooimplementsRunnable{privatebooleanisRun;@Overridepublicvoidrun(){isRun=true;while(isRun){System.out.println("runing......");}}publicvoidstop(){this.isRun=false;}@OverridepublicStringtoString(){return"Foo{"+"isRun="+isRun+'}';}}測試類publicclassThreadTest{publicstaticvoidmain(String[]args){Foof=newFoo();Threadt=newThread(f);t.start();f.stop();System.out.print(f);}}為什么執(zhí)行了stop()方法之后,t線程沒有停止執(zhí)行呢。我debug發(fā)現(xiàn)thread在運(yùn)行start()方法之前,里面的Foo對象和執(zhí)行stop()方法的Foo對象是同一個(gè)。按理說執(zhí)行stop()方法后。f的isRun被設(shè)置成了false,線程讀取到該變量變成false應(yīng)該停止才對??磘hread的源碼求大神解答。
java線程問題,直接看代碼吧。不好描述。
德瑪西亞99
2019-04-21 20:38:54