📌  相关文章
📜  国际空间研究组织 | ISRO CS 2011 |问题 64(1)

📅  最后修改于: 2023-12-03 14:50:46.633000             🧑  作者: Mango

国际空间研究组织 | ISRO CS 2011 | 问题 64

这是ISRO CS 2011考试的第64个问题,主要考察程序员对Java语言的理解和应用能力。

题目描述

下面的Java程序的输出是什么?

public class ISROExam implements Runnable {
   public void run() {
      System.out.print(Thread.currentThread().getName());
   }
   public static void main(String[] args) {
      ISROExam obj = new ISROExam();
      Thread threadA = new Thread(obj, "A");
      Thread threadB = new Thread(obj, "B");
      threadA.start();
      threadB.start();
   }
}

A. A B

B. B B

C. AB

D. 输出不确定

答案解析

本题主要考查程序员对Java多线程的理解。在这个Java程序中,首先定义了一个实现了Runnable接口的类ISROExam,并实现了它的run()方法。在run()方法中,打印出当前线程的名称。

在main()方法中,先创建了一个ISROExam对象obj,然后分别用这个对象创建了两个线程threadA和threadB,它们都是ISROExam类型的Runnable对象,并分别取名为“A”和“B”。随后,分别用start()方法启动线程threadA和threadB。

由于两个线程共享同一个ISROExam对象obj,所以当线程threadA和threadB同时执行run()方法时,都会调用obj实例的run()方法,并打印出当前线程的名称。

因此,正确答案为D. 输出不确定。具体会输出哪些线程名称,取决于线程的调度顺序,也就是说无法确定哪个线程会先获得执行权,所以输出顺序不确定。

参考资料
  1. Java多线程 Javatpoint
  2. Java多线程机制
  3. Java多线程分享