我不了解Java中的线程。我想知道这段代码中发生了什么,因为每次运行时,它都会产生不同的输出:
public class TwoThreadsDemo{
public static void main(String[] args)
{
new SimpleThread("Java Programmer").start();
new SimpleThread("Java Programmer").start();
}
}
class SimpleThread extends Thread{
public SimpleThread(String str)
{
super(str);
}
public void run()
{
for (int i=0;i<10;i++)
{
System.out.println(i + " " + getName());
try
{
sleep((long)(Math.random()*1000));
}
catch(InterruptedException e)
{
}
}
System.out.println("Done!" + getName());
}
}
答案 0 :(得分:2)
你正在睡觉随机秒数。
sleep((long)(Math.random()*1000)); // Because of this.
编辑:为了解释更多,每次运行它都会随机休息几秒钟。所以第一个线程可以在第二个线程之前唤醒五次。在另一次运行中,第二个线程可以在第一个线程之前唤醒两次,依此类推。