我正在学习scjp, 我的问题如下:
public class Bunnies extends Thread{
public static void main(String[] args) {
Thread t = new Thread(new Bunnies());
Thread t1 = new Thread(new Bunnies());
t.start();
t1.start();
}
public void run()
{
for(int i=0; i<3; i++)
{
System.out.println(Thread.currentThread().getName()+" ");
}
}
}
当我运行上面的程序时,我得到如下的 o/p:
Thread-1
Thread-1
Thread-1
Thread-3
Thread-3
Thread-3
这里我不明白为什么这里没有显示Thread-2,只有Thread 1&3。
请解释。
最佳答案
每次您创建一个扩展 Thread
的 Bunnies
时,您也会创建一个 Thread
,因此会出现数字差距。
您的第一次运行:Thread t = new Thread(new Bunnies());
。 new Bunnies()
是 Thread-0
而 t
是 Thread-1
。
然后运行 Thread t1 = new Thread(new Bunnies());
。 new Bunnies()
是 Thread-2
而 t1
是 Thread-3
。
但是请注意,您不应依赖线程编号为 the javadoc不保证数字是连续的。
您可以使用此代码进行验证:
public static void main(String[] args) {
Bunnies b = new Bunnies();
Thread t = new Thread(b);
Bunnies b1 = new Bunnies();
Thread t1 = new Thread(b1);
System.out.println(b.getName()); //Thread-0
System.out.println(t.getName()); //Thread-1
System.out.println(b1.getName()); //Thread-2
System.out.println(t1.getName()); //Thread-3
}
关于java - 不懂Thread o/p,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13913424/