日期:2014-05-20  浏览次数:20705 次

有一个关于线程的问题,搞不明白
小弟刚从国庆开始自学java,在多线程这一块内容时,有点小疑惑
一下这段带码中,main线程运行后会调用自定义类的一个线程,那这个main方法写在这个test类的内部,为什么main线程没有for循环也会运行多次?我对这main运行的逻辑顺序搞不清楚。
Java code
public class Test3 extends Thread
{
    public void run()
    {
        loop();
    }
    public void loop()
    {
        String name = Thread.currentThread().getName();
        System.out.println(name+"--->>刚进入loop方法");
        for(int i=0;i<10;i++)
        {
            try
            {
                Thread.sleep(4000);
            }
            catch(InterruptedException X)
            {
            }
            System.out.println("name="+name);
        }
        System.out.println(name+"离开");
    }
    public static void main(String[] args)
    {
        Test3 tt=new Test3();
        tt.setName("my");
        tt.start();
        try
        {
            Thread.sleep(700);
        }
        catch(InterruptedException x)
        {
        }
        tt.loop();
    }
}
        


------解决方案--------------------
如果是在自己的类里执行这个方法的话
先执行tt.loop()然后main通过tt.start()也执行loop()
如果主方法不在本类中,顺序相反
------解决方案--------------------
探讨

引用:
Java code

tt.loop();//相当于调用类的方法

这个我理解,我不明白的是,main也应该是一种特殊的方法,是程序的入口,按照这样的说法,main线程是不是在程序启动的时候运行一次,为什么之后也会出现循环运行。

------解决方案--------------------
LZ还是没理解线程
main是主线程,调用
Test3 tt=new Test3(); //生成一个线程对象
tt.setName("my");
tt.start();//启动该线程对象
那么此时就有2个线程,main线程和tt线程,tt线程会执行自己的run方法,而run方法会调用loop,所以就会有循环打印。