[小白提问] java多线程中从从外部引用包似乎能改变线程的运行顺序,这是为什么?

发布于 2020-04-20 16:20:18

写java多线程作业的时候发现,在没有执行到引用外部包的代码时,程序大概率是先运行完主线程再运行其他线程;但是在引用了之后,这种顺序就会被打乱。为什么会这样?

--------------没引用外部包的时候-------------
1.png

--------------引用了外部包的时候-------------
1.jpg

代码如下

package zy01;

class A{
    public static int b=0;
    A(){
        b++;
        System.out.println(b);
        }
}

public class zy01 {
public static void main(String[] args) {
        WriteWordThread zhang,wang;
        zhang=new WriteWordThread("张小红");
        wang=new WriteWordThread("JamsKeven");
        zhang.start();
        new A();
        
        // 使用下面一行代码,线程的运行顺序会改变
        // new grbq.grbq("zy01");    // 引用外部包打印个人标签
        
        for(int i=1;i<=3;i++)
            {
                System.out.println("主线程");
            }
        wang.start();
        new grbq.grbq("zy01");    // 引用外部包打印个人标签
        
        System.out.println("main 末尾");
        
        for(int i=0;i<3;i++)
            System.out.println(i);
        new grbq.grbq("zy01");    // 引用外部包打印个人标签
    }
}


class WriteWordThread extends Thread{
    WriteWordThread(String s){
        setName(s);
    }
    public void run() {
        for(int i=1;i<=3;i++)
            {
                System.out.println("线程:"+getName());
            }
        
    }
}

查看更多

关注者
0
被浏览
410
3 个回答
申来来
申来来 认证专家 2020-04-23
年轻是本钱,但不努力就不值钱

main函数他就是一个主线程 他下面的一些 都是他的线程 之前main函数下只有一个叫主线程 后来又一个小红 小明 main函数一个主线程下就会有了3个一线程 多线程之间就会出现抢占cpu 随先抢到谁就是第一个 如何控制 加锁

beijing
beijing 2020-06-23

main函数他就是一个主线程 他下面的一些 都是他的线程 之前main函数下只有一个叫主线程 后来又一个小红 小明 main函数一个主线程下就会有了3个一线程 多线程之间就会出现抢占cpu 随先抢到谁就是第一个 如何控制 加锁

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览