黑马程序员技术交流社区
标题:
什么这两个代码,产生的线程的名字不同
[打印本页]
作者:
刘海陆
时间:
2013-5-14 20:03
标题:
什么这两个代码,产生的线程的名字不同
本帖最后由 刘海陆 于 2013-5-19 12:56 编辑
代码A :
package cn.itcast;
public class ThreadCreateTest {
/**
* @param args
*/
public static void main(String[] args) throws Exception{
System.out.println("main strat");
new Thread(new Thread(){
@Override
public void run(){
while (true) {
System.out.println(Thread.currentThread().getName());
System.out.println(this.getName());
try {
Thread.sleep(500);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}).start();
System.out.println("main end");
}
}
代码 B::
package cn.itcast;
public class ThreadCreateTest {
/**
* @param args
*/
public static void main(String[] args) throws Exception{
System.out.println("main strat");
Thread thread = new Thread(){
@Override
public void run() {
// TODO Auto-generated method stub
while(true){
System.out.println(Thread.currentThread().getName());
System.out.println(this.getName());
try {
Thread.sleep(1000);
} catch (Exception e) {
// TODO: handle exception
}
}
}
};
thread.start();
System.out.println("main end");
}
}
代码A 运行的结果是 thread1 thread0 两个线程的名字
代码B 运行的结果是 只有 thread0 一个线程的名字
没想明白,为什么代码A运行的时候,会产生两个线程呢,求解,想了好久也没想明白,求解
作者:
xuemeng
时间:
2013-5-14 21:20
因为你的A 开启了两个线程啊
你的B就开启了一个线程, 其实你看看你的A 有两个new ,那就是两个对象
你的B, 就new了一个对象, 然后用这个对象的引用开启线程, 当然就只有一个线程了
当然, 这里我没算主线程
作者:
刘海陆
时间:
2013-5-15 20:45
嗯,明白了,谢谢哈
作者:
袁梦希
时间:
2013-5-18 12:48
如果问题已经解决了,那么大家请把帖子的类型改为“已解决”,在自己帖子的左下角点编辑,然后选择帖子的分类进行改正
。{:soso_e163:}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2