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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑马-小龙 中级黑马   /  2013-1-26 22:21  /  2147 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 张向辉 于 2013-1-27 14:26 编辑

new Thread(new Runnable(){
public void run(){
while(true){
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("Runnable--:" + Thread.currentThread().getName());
}
}
}){
public void run(){
while(true){
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("Thread--:" + Thread.currentThread().getName());
}
}
}.start();
这里,为什么运行的结果是:Thread--。
是因为:父类没有,就去子类找的吗?是基于这个原则吗?  这里,可以用this表示当前线程吗?

评分

参与人数 1技术分 +1 收起 理由
Rancho_Gump + 1

查看全部评分

4 个回复

倒序浏览
start()前面多了段代码块啊,第一次见到。能解释下作用吗?
代码块中的run()方法好像把new Runnable(){}中的run()方法覆盖了!
回复 使用道具 举报
谢毅 来自手机 中级黑马 2013-1-27 11:05:02
藤椅
首先我们看这个方法的构造,实例了一个Thread,里面传入一个匿名内部类实现了Runnable,然后后面紧接着写了一个Thread匿名子类,这时的优先级就是运行Thread的匿名子类而不看匿名内部类,你说的用this只能在继承Thread类实现线程这种方式中使用取得线程信息,这里的话可以在Thread的匿名子类中使用

评分

参与人数 1技术分 +1 收起 理由
Rancho_Gump + 1

查看全部评分

回复 使用道具 举报
new Thread(new Runnable(){
        public void run(){
                while(true){
                        try {
                                Thread.sleep(500);
                        } catch (InterruptedException e) {
                                e.printStackTrace();
                        }

                        System.out.println("Runnable--:" + Thread.currentThread().getName());
                }
        }
}).start();


这是开启一个线程的写法,如果想开启多个,可用for循环把上面的代码循环几遍就创建几个。
回复 使用道具 举报
个人是这么理解的
你首先创建了一个线程(这里有A来表示),它实现了Runnable接口,此时,你又创建了一个线程(这里用B来表示)他继承了A,并复写了A的run方法,所以运行结果是子类的内容
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马