📜  Java程序的输出 |设置 46(多线程)

📅  最后修改于: 2022-05-13 01:56:11.022000             🧑  作者: Mango

Java程序的输出 |设置 46(多线程)

先决条件: Java的多线程

1. 程序的输出是什么?

class Test extends Thread {
public
    void run()
    {
        System.out.println("Run");
    }
} class Myclass {
public
    static void main(String[] args)
    {
        Test t = new Test();
        t.start();
    }
}

选项:
1.创建一个线程
2.创建了两个线程
3. 依赖系统
4.没有创建线程
输出:

The answer is option (2)

说明:在上面的程序中,会创建一个线程,即负责执行main()方法的主线程和负责执行run()的t.start()执行后创建子线程方法。

2. 程序的输出是什么?



class Test extends Thread {
public
    void run()
    {
        System.out.println("Run");
    }
} class Myclass {
public
    static void main(String[] args)
    {
        Test t = new Test();
        t.run();
    }
}

选项:
1.创建一个线程
2.创建了两个线程
3. 依赖系统
4.没有创建线程

输出:

The answer is option (1)

说明:在上面的程序中只会创建一个线程,即只负责执行 main() 方法的主线程。 run() 方法像普通方法一样由对象 t 调用。

3. 程序的输出顺序是什么?

class Test extends Thread {
public
    void run()
    {
        System.out.println("Run");
    }
} class Myclass {
public
    static void main(String[] args)
    {
        Test t = new Test();
        t.start();
        System.out.println("Main");
    }
}

选项:
1. 主要运行
2. 运行主程序
3. 取决于程序
4. 依赖JVM

输出:

The answer is option (4)

说明:在上面的程序中,我们无法预测输出的确切顺序,因为它是由 JVM 的一部分线程调度程序决定的。

4. 程序的输出是什么?



class Test implements Runnable {
public
    void run()
    {
        System.out.println("Run");
    }
} class Myclass {
public
    static void main(String[] args)
    {
        Test t = new Test();
        t.start();
        System.out.println("Main");
    }
}

选项:
1. 主要运行
2. 运行主程序
3.编译时错误
4. 依赖JVM

输出:

The answer is option (3)

说明:在上面的程序中,我们将得到编译时错误,因为 start() 方法仅存在于 Thread 类中,并且我们正在实现 Runnable 接口。

5. 程序的输出是什么?

class Test implements Runnable {
public
    void run()
    {
        System.out.println("Run");
    }
} class Myclass {
public
    static void main(String[] args)
    {
        Thread t1 = new Thread();
        t1.start();
        System.out.println("Main");
    }
}

选项:
1.运行
2. 主要
3.编译时错误
4. 运行主程序

输出:

The answer is option (2)

说明:在上面的程序中,我们调用了Thread类的start()方法,它负责执行Thread类的run()方法,而Thread类的run()方法有空实现。这就是为什么将创建一个子线程但它不会执行测试类 run() 方法的原因。