黑马程序员技术交流社区

标题: 线程初级问题 已解决 [打印本页]

作者: 王璐    时间: 2012-6-14 17:46
标题: 线程初级问题 已解决
本帖最后由 王璐 于 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();”为什么是一创建对象就创建好了一个线程?
作者: 李盼    时间: 2012-6-14 17:48
本帖最后由 李盼 于 2012-6-14 17:50 编辑

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

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

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

作者: 葛奎    时间: 2012-6-14 17:55
Demo d=new Demo();  因为Demo继承了Thread类,重写了run方法.   至于Tread类是如何建立线程,这就与系统底层相互工作有关 我们没有必要知道
只要知道建立线程需要用到Tread类就行了
作者: 张_涛    时间: 2012-6-14 18:55
我在Thread的源代码中找到这么一个静态代码块:
static {
        registerNatives();
}
它的意思就是对本地方法进行注册,很多类中都有很多类里都有这个方法,但是执行的目标是不相同的。
像毕向东老师讲IO操作的时候,最终这些是由本地方法实现的。
再深入的也不理解了,目前大概就知道这些。
作者: 胡卿    时间: 2012-6-14 19:18
因为Demo继承了Thread类,重写了run方法,Thread是线程,它的子类当然也是线程了
作者: 黄昆    时间: 2012-6-14 19:20
Demo类继承了Thread类,然后重写父类的run方法,那么Demo类中建立的对象都是线程对象
作者: 孙浩迪    时间: 2012-6-14 19:40
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 方法 启动线程, 子类继承父类,子类可以调用父类的方法。
        }
}





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2