猿问

请教关于thread构造方法的一个小问题

package test;
public class Test0919 
{
    public static void main(String args[])
    {
        A a=new A("t1");
    }
}

class A implements Runnable
{
    Thread t=null;
    String tname=null;
    public A(String tname)
    {
        this.tname=tname;
        this.t=new Thread(this, tname);
        this.t.start();
    }
    @Override
    public void run() 
    {
        try 
        {
            for(int i=0;i<20;i++)
            {
                System.out.println(this.t.getName());
                this.t.sleep(300);
            }
        } 
        catch (InterruptedException e) 
        {
            e.printStackTrace();
        }
    }
}
构造一个线程

为什么将A类中构造方法中线程的构造方法改为thread(tname)控制台就不打印线程名称啦

package test;
public class Test0919 
{
    public static void main(String args[])
    {
        A a=new A("t1");
    }
}

class A implements Runnable
{
    Thread t=null;
    String tname=null;
    public A(String tname)
    {
        this.tname=tname;
        this.t=new Thread(tname);
        this.t.start();
    }
    @Override
    public void run() 
    {
        try 
        {
            for(int i=0;i<20;i++)
            {
                System.out.println(this.t.getName());
                this.t.sleep(300);
            }
        } 
        catch (InterruptedException e) 
        {
            e.printStackTrace();
        }
    }
}
View Code
翻阅古今
浏览 597回答 2
2回答

慕的地8271018

我觉得之所以不打印是因为你执行start方法的线程并不是A,因为你在构造里面是新new出来的一个Thread,它start,并不代表A里面的run方法会执行。我也没测试过,如果楼主有正确答案不妨告知下。

慕哥9229398

构造函数吧Thread 的参数穿进去,public A(String tname,Thread t)
随时随地看视频慕课网APP

相关分类

Java
我要回答