Java Thread run()方法

如果线程是实现Runnable接口的,则调用Thread类的run()方法,否则此方法不执行任何操作并返回。 当run()方法调用时,将执行run()方法中指定的代码。可以多次调用run()方法。

可以使用start()方法或通过调用run()方法本身来调用run()方法。 但是当使用run()方法调用自身时,它会产生问题。

示例1: 使用start()方法调用run()方法

public class RunExp1 implements Runnable  
{    
    public void run()  
    {    
        System.out.println("Thread is running...");    
    }    
    public static void main(String args[])  
    {    
        RunExp1 r1=new RunExp1();    
        Thread t1 =new Thread(r1);    
        // this will call run() method   
        t1.start();    
    }    
}

执行上面示例代码,得到以下结果:

Thread is running...

示例2 :使用run()方法本身调用run()方法

public class RunExp2 extends Thread  
{    
    public void run()  
    {    
        System.out.println("running...");    
    }    
    public static void main(String args[])  
    {    
        RunExp2 t1=new RunExp2 ();    
        // It does not start a separate call stack   
        t1.run();   
    }    
}

执行上面示例代码,得到以下结果:

running...

在这种情况下,它转到当前的调用堆栈而不是新调用堆栈的开头。

示例3:多次调用run()方法

public class RunExp3 extends Thread  
{    
    public void run()  
    {    
        for(int i=1;i<6;i++)  
        {    
            try  
            {  
                Thread.sleep(500);  
            }catch(InterruptedException e){System.out.println(e);}    
        System.out.println(i);    
        }    
    }    
    public static void main(String args[])  
    {    
        RunExp3 t1=new RunExp3();    
        RunExp3 t2=new RunExp3();    
        t1.run();    
        t2.run();    
    }    
}

执行上面示例代码,得到以下结果:

1
2
3
4
5
1
2
3
4
5

在上面的例子3 中,没有内容切换,因为这里t1t2被视为普通对象而不是线程对象。


上一篇: Java Runtime类 下一篇:无