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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 杜加璇 中级黑马   /  2013-4-4 21:52  /  1758 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 杜加璇 于 2013-4-5 18:06 编辑

  class My {
        
           public static void main(String[] args) {                  
                Thread t1 = new Thread("线程1"){                                                                        
                        public void run() {                                       
                                for (int i = 0; i < 1000; i++)         
                                        System.out.println(getName() + ": A");        
                        }         
                };
               
                Thread t2 = new Thread(new Runnable(){                                
                        public void run() {                                       
                                for (int i = 0; i < 1000; i++)        
                                        System.out.println("B");
                        }
                }, "线程2");//老师说这通过构造传线程名字,不是太理解,求大神解释
}
}

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

4 个回复

正序浏览
Thread类中有8个构造函数,其中一个构造函数的参数是线程名,即public Thread(String name),Thread t1新建了一个匿名内部类Thread类的子类对象,将线程名 “线程一”传递进去了。还有一种构造函数的参数就是传入两个参数,一个Runnable类对象和一个线程名,public Thread(Runnable target,
              String name)。Thread t2用这个构造函数初始化了一个线程,其中是用匿名内部类实现了Runnable接口的子类对象,然后传进来的。new Runnable(){........}这整个代码就可是Runnable接口的匿名内部类实现了子类对象,当成了一个参数,只不过这个参数有点胖。

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
new Thread后面的大括号里面就是传参数的.
在里面直接写匿名对象也就是你说的传线程,run方法是实现了Runnable接口必须覆盖的.
回复 使用道具 举报
这是两种创建多线程的方式.而且都是用匿名内部类来实现的.第一种是Thtead中有这么个构造方法,Thread(String name){},查API可以知道:
Thread..,
public Thread(String name)分配新的 Thread 对象。这种构造方法与 Thread(null, null, name) 具有相同的作用。

参数:
name - 新线程的名称
第二种,就没有线程名称了,可通过Thread.current().getName()来获取线程的名称.
还有就是你都没有调用start(),怎能得到结果呢?
有时不明白之处,可从结果中到答案哦.

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
Thread t2 = new Thread(new Runnable(){                                
                        public void run() {                                       
                                for (int i = 0; i < 1000; i++)        
                                        System.out.println("B");
                        }
                }, "线程2");

其实这个还是可以理解的

  通过构造方法传线程的名字
最外围的大括号里的就都是通过构造来传线程


这是一种比较优的写法的.

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马