黑马程序员技术交流社区

标题: 线程获取名字,这两个语句有区别吗? [打印本页]

作者: 我能驾驭住    时间: 2012-5-19 15:06
标题: 线程获取名字,这两个语句有区别吗?
System.out.println(this.getName()+"text run..."+x);
System.out.println(Thread.currendThread().getName()+"text run..."+x);
这两个语句一样吗?毕老师说不一样,我搞不懂,纯程获取名字懂了,自定义也懂了,后面这个语句是什么神马意思呢?
Thread.currendThread().getName()+"//默认线程名字获取是以Thread-0 Thread-1...............
class Test extends Thread
{
        public void run() //这里是算定义线程存放的代码
        {
                for(int x=0;x<15;x++)
                {
                        System.out.println(this.getName()+"text run..."+x);
                }
        }
}
class ThreadTest
{
        public static void main(String[] args)
        {
                Test t1=new Test();//建立对象,就是相当于建立一个线程
                Test t2=new Test();//建立对象,建立第二个线程
                t1.start();//开启线程,调用run()方法
                t2.start();
                //下面这个是主线程里面存放的代码
                for(int x=0;x<15;x++)
                {
                        System.out.println("main...."+x);
                }
        }
}
//下面这个是自定义线程名称...

class Test extends Thread
{
        Test(String name)//接收类型为string的构造函数
        {
                super(name);//thread父类中的名字
        }
        public void run()
        {
                for(int x=0;x<15;x++)
                {
                        System.out.println(this.getName()+"text run..."+x);
                        System.out.println(Thread.currendThread().getName()+"text run..."+x);
                        //上面这两个语句功能是一样的,只是线程的第二种方法,用第二条语句保险一点!
                }
        }
}
class ThreadTest
{
        public static void main(String[] args)
        {
                Test t1=new Test("one...");
                Test t2=new Test("two...");
                t1.start();
                t2.start();
                for(int x=0;x<15;x++)
                {
                        System.out.println("main...."+x);
                }
        }
}


作者: 李文富    时间: 2012-5-19 15:16
见注释里:
System.out.println(this.getName()+"text run..."+x);
System.out.println(Thread.currendThread().getName()+"text run..."+x);
这两个语句一样吗?毕老师说不一样,我搞不懂,纯程获取名字懂了,自定义也懂了,后面这个语句是什么神马意思呢?
//Thread.currendThread().getName()在线程下取得当前线程的名字,
//currentdTheread()是指调用当前线程立刻打印的意思,第一个this表示当前的线程对象,有可能产生打印延时。
Thread.currendThread().getName()+"//默认线程名字获取是以Thread-0 Thread-1...............
class Test extends Thread
{
        public void run() //这里是算定义线程存放的代码;这里是覆写run方法;
        {
                for(int x=0;x<15;x++)
                {
                        System.out.println(this.getName()+"text run..."+x);
                }
        }
}
class ThreadTest
{
        public static void main(String[] args)
        {
                Test t1=new Test();//建立对象,就是相当于建立一个线程
                Test t2=new Test();//建立对象,建立第二个线程
                t1.start();//开启线程,调用run()方法
                t2.start();
                //下面这个是主线程里面存放的代码
                for(int x=0;x<15;x++)
                {
                        System.out.println("main...."+x);
                }
        }
}
//下面这个是自定义线程名称...

class Test extends Thread
{
        Test(String name)//接收类型为string的构造函数
        {
                super(name);//thread父类中的名字
        }
        public void run()
        {
                for(int x=0;x<15;x++)
                {
                        System.out.println(this.getName()+"text run..."+x);
                        System.out.println(Thread.currendThread().getName()+"text run..."+x);
                        //上面这两个语句功能是一样的,只是线程的第二种方法,用第二条语句保险一点!
        //currentdTheread()是指调用当前线程的意思,用第一个this表示当前的线程对象,有可能产生延时
                }
        }
}
class ThreadTest
{
        public static void main(String[] args)
        {
                Test t1=new Test("one...");
                Test t2=new Test("two...");
                t1.start();
                t2.start();
                for(int x=0;x<15;x++)
                {
                        System.out.println("main...."+x);
                }
        }
}





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2