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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 孙胜 中级黑马   /  2013-5-1 22:29  /  1840 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 孙胜 于 2013-5-2 20:58 编辑

开启多线程一般有两种方法:
1.写个类TestClass继承Thread,重写run方法,然后new TestClass().start();

2.写个类TestClass实现Runnable接口,重写run方法,然后new Thread(new TestClass()).start();
或者用内部类简写new Thread(new Runnable(){
        public void run(){
        }
}.start();




我自己试验了下这样也行:
(new Thread(){
        public void run(){
        }
}).start();
但是没见过有人用,谁能告诉我不这么写的原因吗?

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

6 个回复

倒序浏览
你这就是第一种
回复 使用道具 举报
创建了 Thread子类的匿名内部类 覆盖run方法
回复 使用道具 举报
第一种继承了Thread类以后就不能继承别的类了
第二种实现了Runnable接口以后还可以继承别的类
public class ThreadTest {
        public static void main(String[] args){
        //这么写就是用匿名内部类使用第一种方法吧
        Thread a = new Thread(){
                        public void run(){
                                System.out.println("aa");
                        }
                };
                a.start();
               
        }

}

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
楼主说的那种 创建Thread类的匿名子类对象 很常用啊  
第一种 继承Thread类 中的匿名子类
new Thread(){
        public void run(){
        }
}.start();

第二种 :创建实现Runnable接口中的匿名了类
Runnable r =new Runnable(){}{
   public void run(){
   }
}
r.start();


评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
如果仍有问题,请继续追问,如果问题已解决,请将分类改为已解决,谢谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马