Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么使用setIsrunning(false)方法‘;s的呼叫者是;“主要”;线_Java_Multithreading - Fatal编程技术网

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("线程被停止了");
}
}