Java 为什么使用setIsrunning(false)方法‘;s的呼叫者是;“主要”;线
Java 为什么使用setIsrunning(false)方法‘;s的呼叫者是;“主要”;线,java,multithreading,Java,Multithreading,setisrunning()方法属于Runthread,因此我认为它应该由Runthread的实例调用,但实际上它是由线程“main”调用的。我想知道这是为什么 因为它是在main方法中启动线程后的行。如果它应该在另一个线程中启动,那么您应该在另一个线程的运行方法中设置它。谢谢,我自己把它弄复杂了,我现在就明白了 public class Run { public static void main(String[] args) { try{ RunThreas runTh
setisrunning()
方法属于Runthread
,因此我认为它应该由Runthread
的实例调用,但实际上它是由线程“main”调用的。我想知道这是为什么 因为它是在main
方法中启动线程后的行。如果它应该在另一个线程
中启动,那么您应该在另一个线程
的运行
方法中设置它。谢谢,我自己把它弄复杂了,我现在就明白了
public class Run {
public static void main(String[] args) {
try{
RunThreas runThreas=new RunThreas();
runThreas.start();
//Thread.sleep(2000);
runThreas.setIsrunning(false);
System.out.println("已经赋值为false");
}catch (Exception e){
e.printStackTrace();
}
}
}
class RunThreas extends Thread{
private boolean isrunning=true;
public boolean isRunning(){
return isrunning;
}
public void setIsrunning(boolean isrunning){
System.out.println(Thread.currentThread().getName()+"set");
this.isrunning=isrunning;
}
@Override
public void run() {
super.run();
System.out.println(Thread.currentThread().getName()+"run");
System.out.println("进入run");
while(isrunning){
System.out.println("i am running");
}
System.out.println("线程被停止了");
}
}