多线程定义为什么不能实现多线程?

package Thread.Method;

public class Stop {
public static void main(String[] args) {
DogRunable dogRunable=new DogRunable();
dogRunable.setName("小狗线程");
dogRunable.start();

    for (int i = 0; i <30 ; i++) {
        System.out.println("主线程跑");
    }

}

}

class DogRunable extends Thread{
@Override
public void run() {
for (int i = 0; i <20 ; i++) {
if (i==15){
this.stop();
}
System.out.println(this.getName()+"吃......."+i);
}
}
}

这段代码为什么实现不了多线程 而是主线程跑完再执行的小狗吃线程?

是这么加的吗?

img


结果是这样,你是不是第一句打印没有看到?

img


也可能是不是子线程跑的太快,让你觉得它都跑完才开始主线程,建议你两边都加sleep试一下?

package Thread.Method;
public class Stop {
    public static void main(String[] args) {
        DogRunable dogRunable=new DogRunable();
        dogRunable.setName("小狗线程");
        dogRunable.start();

        for (int i = 0; i <30 ; i++) {
            System.out.println("主线程跑");
            try {
                Thread.sleep(1000);
            }catch (Exception e){
                throw new RuntimeException(e);
            }

        }

    }
}

class DogRunable extends Thread{
    @Override
    public void run() {
        for (int i = 0; i <20 ; i++) {
            if (i==15){
                this.stop();
            }
            System.out.println(this.getName()+"吃......."+i);

            try {
                Thread.sleep(1000);
            }catch (Exception e){
                throw new RuntimeException(e);
            }
        }
    }
}

你把多线程想象成什么了,你这才循环30次,就几纳秒就执行完了,线程还没起来呢
你在循环里加个sleep(1000)再试试

楼主更新一下代码格式,用 markdown

让代码睡一会