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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张亮 中级黑马   /  2012-4-6 09:10  /  1818 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. public class TestThread1 {
  2.         public static void main(String [] args){
  3.                 MyThread mt=new MyThread();
  4.                 Thread t = new Thread(mt);
  5.                 t.start();
  6.        
  7.                 for(int i=0;i<=100;i++) {
  8.                         System.out.println("main:         "+i);
  9.                         }
  10.                 }
  11.        
  12.         }
  13.        
  14. class MyThread implements Runnable {
  15.         public void run(){
  16.                 for(int i=0;i<=100;i++) {
  17.                         System.out.println("---------"+i);
  18.                         }
  19.                
  20.                 }
  21.        
  22.         }
复制代码
我的问题是:怎么理解Thread t = new Thread(mt)这句话。怎么理解把mt传到Thread的构造方法中。

4 个回复

倒序浏览
通过new MyThread();在堆内存里创建了一个对象,把对象的地址放到 引用变量 mt里。new Thread(mt)这代码意思是把刚才 在堆里创建的 MyThread 对象的地址传给 该Thread对象,使该对象知道要操作的MyThread对象放在堆的哪个地方
回复 使用道具 举报
Thread t = new Thread(mt): 这是创建一个线程

怎么理解把mt传到Thread的构造方法中:因为MyThread中的run方法所属的对象是Runnable的子类对象。所以要让线程去指定对象的run方法,
就必须明确该run方法所属对象,所以要把 mt传到Thread的构造方法中
回复 使用道具 举报
怎么理解把mt传到Thread的构造方法中:因为线程必须实现run方法,mt传到Thread的构造方法中是为了指定线程要执行哪个对象的run方法
回复 使用道具 举报
Thread t = new Thread(mt),这样就创那好了一个线程,但是仅是一个线程,必在有类去实现在Runnable。mt只能代表一个对象,t代表的是一个线程,Runnble是Thread已实现的接口,所以Runnble和Thread已经有关系了;然后对象mt与Runnable也是有关系的;所以对象mt和Thread也有了关系。Thread中有一个带参加的构造函数。也就是对应该创建的Thread t = new Thread(mt);。说得太多了,希望你能明白。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马