因为你这是死循环
while (isRun){
System.out.println("runing ......");
}
而且isRun一直是true, 你应该改成:
@Override
public void run() {
//isRun = true;
while (isRun){
System.out.println("runing ......");
}
}
isRun一开始就初始化,应该这么写:
public class FooThread implements Runnable{
private boolean isRun = true;
@Override
public void run() {
System.out.println("run begin...");
//isRun = true;
while (isRun){
System.out.println("runing ......");
}
}
public void stop(){
System.out.println("call stop");
this.isRun = false;
}
@Override
public String toString() {
return "Foo{" +
"isRun=" + isRun +
'}';
}
public static void main(String[] args) {
FooThread f = new FooThread();
Thread t = new Thread(f);
t.start();
try {
Thread.sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
f.stop();
System.out.print(f);
}
}
最终输出:
runing ......
runing ......
runing ......
runing ......
runing ......
runing ......
runing ......
runing ......
runing ......
runing ......
runing ......
runing ......
runing ......
runing ......
runing ......
runing ......
runing ......
runing ......
call stop
Foo{isRun=false}