A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© java—family 中级黑马   /  2014-7-21 10:43  /  1098 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

package DuoXianCheng;

public class ThreadDemo1 {
//创建线程有两种方式
         /*第一种是 ,继承Thread类,复写run方法
          * 步骤:定义一个类继承Thread类
          *     复写run方法
          *     创建Thread 子类对象创建线程。
          *     调用start方法
          *     */
        public static void main(String[] args) {
                // TODO Auto-generated method stub
                Demo d1 = new Demo("小明");
                Demo d2 = new Demo("小强");
                d1.start();
                d2.start();
        }

}
class Demo extends Thread{
        private String name;
        Demo(String name){
                super(name);
//                this name = name;
               
        }
        public void run(){
                for(int x=0;x<10;x++){
                        System.out.println(name+Thread.currentThread().getName());
                }
        }
}
运行后
null小明null小强null小明null小强null小明null小强null小明null小强null小明null小强null小明null小明null小明null小明null小明null小强null小强null小强null小强null小强为什么怎么会这样   Thread.currentThread().getName()去哪里了

2 个回复

正序浏览
在Demo类中你定义了一个private的name,并且构造函数是引用了thread中的name,你获取的线程名称实际上就是小强和小明,你给两个线程取了两个名字  就是小强和小明。null打印的是name输出的值,因为你并没有定义name的获取方法,而构造函数有出现了super(name);说一打印出来是null+线程名:小强或者小明。
回复 使用道具 举报
在Demo类中你定义了一个private的name,并且构造函数是引用了thread中的name,你获取的线程名称实际上就是小强和小明,你给两个线程取了两个名字  就是小强和小明。null打印的是name输出的值,因为你并没有定义name的获取方法,而构造函数有出现了super(name);说一打印出来是null+线程名:小强或者小明。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马