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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王璐 中级黑马   /  2012-6-14 17:46  /  1326 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 王璐 于 2012-6-15 08:23 编辑
  1. class Demo extends Thread
  2. {
  3.         public void run()
  4.         {
  5.                 System.out.println("demo run");
  6.         }
  7. }
  8. class  
  9. {
  10.         public static void main(String[] args)
  11.         {
  12.                 Demo d=new Demo();//创建好一个线程。
  13.                 d.start();
  14.         }
  15. }
复制代码
程序中:“Demo d=new Demo();”为什么是一创建对象就创建好了一个线程?

7 个回复

倒序浏览
本帖最后由 李盼 于 2012-6-14 17:50 编辑

因为Demo这个类继承了Thread并且重写了run方法!
具备多线程的类必须要继承Thread方法或者实现Runnable接口,并且重写run方法,而run方法体里面就是线程执行的代码!
回复 使用道具 举报
因为它是继承自Thread类的类,所以就是创建了一个线程。就和创建一个异常类一样啊
在Java中通过run方法为线程指明要完成的任务,
有两种技术来为线程提供run方法。

1.继承Thread类并重写run方法。  

2.通过定义实现Runnable接口的类进而实现
run方法。  

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 赞一个!

查看全部评分

回复 使用道具 举报
Demo d=new Demo();  因为Demo继承了Thread类,重写了run方法.   至于Tread类是如何建立线程,这就与系统底层相互工作有关 我们没有必要知道
只要知道建立线程需要用到Tread类就行了
回复 使用道具 举报
我在Thread的源代码中找到这么一个静态代码块:
static {
        registerNatives();
}
它的意思就是对本地方法进行注册,很多类中都有很多类里都有这个方法,但是执行的目标是不相同的。
像毕向东老师讲IO操作的时候,最终这些是由本地方法实现的。
再深入的也不理解了,目前大概就知道这些。
回复 使用道具 举报
因为Demo继承了Thread类,重写了run方法,Thread是线程,它的子类当然也是线程了
回复 使用道具 举报
黄昆 中级黑马 2012-6-14 19:20:14
7#
Demo类继承了Thread类,然后重写父类的run方法,那么Demo类中建立的对象都是线程对象
回复 使用道具 举报
class Demo extends Thread   // Demo继承了父类 Thread   
{
        public void run()   //重写了父类的run 方法。
        {
                System.out.println("demo run");
        }
}
class  
{
        public static void main(String[] args)
        {
                Demo d=new Demo();//创建好一个线程。         
                d.start();   //调用了父类有start 方法 启动线程, 子类继承父类,子类可以调用父类的方法。
        }
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马