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());
}
}

解决方案 »

  1.   

    没有问题啊。 可以运行下面是我这的运行结果0 ThreadOne
    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
      

  2.   

    线程什么命令可以得到当前线程的 getName.
      

  3.   

    一句
    sleep((int)(Math.random() * 1000));
    就足以说明你的这个程序的输出具有不确定性但是如果for循环次数比较大,你不用random函数也一样会输出随机性的结果!其实多线程从严格意义上来说(仅指单cpu时)只是一个分时处理的过程。一个进程可以有多个线程。一个进程如果启动了多个线程,在默认情况下(同优先级)是可以相互抢占CPU资源的!