class TwoThreadsTest
{
public static void main (String args[])
{
//创建名为ThreadOne 的线程实例,并启动执行
new SimpleThread("ThreadOne").start();
//创建名为ThreadTwo 的线程实例,并启动执行
new SimpleThread("ThreadTwo").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()); //getName()获得当前线程名称
try
{
sleep((int)(Math.random() * 1000));
}
catch (InterruptedException e) {}
}
System.out.println("DONE! " + getName());
}
}
{
public static void main (String args[])
{
//创建名为ThreadOne 的线程实例,并启动执行
new SimpleThread("ThreadOne").start();
//创建名为ThreadTwo 的线程实例,并启动执行
new SimpleThread("ThreadTwo").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()); //getName()获得当前线程名称
try
{
sleep((int)(Math.random() * 1000));
}
catch (InterruptedException e) {}
}
System.out.println("DONE! " + getName());
}
}
0 ThreadTwo
1 ThreadOne
1 ThreadTwo
2 ThreadOne
2 ThreadTwo
3 ThreadTwo
3 ThreadOne
4 ThreadTwo
4 ThreadOne
5 ThreadOne
5 ThreadTwo
6 ThreadOne
6 ThreadTwo
7 ThreadOne
8 ThreadOne
7 ThreadTwo
8 ThreadTwo
9 ThreadTwo
9 ThreadOne
DONE! ThreadTwo
DONE! ThreadOne
sleep((int)(Math.random() * 1000));
就足以说明你的这个程序的输出具有不确定性但是如果for循环次数比较大,你不用random函数也一样会输出随机性的结果!其实多线程从严格意义上来说(仅指单cpu时)只是一个分时处理的过程。一个进程可以有多个线程。一个进程如果启动了多个线程,在默认情况下(同优先级)是可以相互抢占CPU资源的!