黑马程序员技术交流社区

标题: 多线程问题 [打印本页]

作者: java—family    时间: 2014-7-21 10:43
标题: 多线程问题
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()去哪里了


作者: 阿磊    时间: 2014-7-21 11:05
在Demo类中你定义了一个private的name,并且构造函数是引用了thread中的name,你获取的线程名称实际上就是小强和小明,你给两个线程取了两个名字  就是小强和小明。null打印的是name输出的值,因为你并没有定义name的获取方法,而构造函数有出现了super(name);说一打印出来是null+线程名:小强或者小明。
作者: 阿磊    时间: 2014-7-21 11:06
在Demo类中你定义了一个private的name,并且构造函数是引用了thread中的name,你获取的线程名称实际上就是小强和小明,你给两个线程取了两个名字  就是小强和小明。null打印的是name输出的值,因为你并没有定义name的获取方法,而构造函数有出现了super(name);说一打印出来是null+线程名:小强或者小明。




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