📅  最后修改于: 2023-12-03 14:50:46.633000             🧑  作者: Mango
这是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. 输出不确定。具体会输出哪些线程名称,取决于线程的调度顺序,也就是说无法确定哪个线程会先获得执行权,所以输出顺序不确定。