黑马程序员技术交流社区

标题: 线程问题 [打印本页]

作者: 张亮    时间: 2012-4-6 09:10
标题: 线程问题
  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的构造方法中。
作者: 曾晓文    时间: 2012-4-6 09:20
通过new MyThread();在堆内存里创建了一个对象,把对象的地址放到 引用变量 mt里。new Thread(mt)这代码意思是把刚才 在堆里创建的 MyThread 对象的地址传给 该Thread对象,使该对象知道要操作的MyThread对象放在堆的哪个地方
作者: 莫运飞    时间: 2012-4-6 09:50
Thread t = new Thread(mt): 这是创建一个线程

怎么理解把mt传到Thread的构造方法中:因为MyThread中的run方法所属的对象是Runnable的子类对象。所以要让线程去指定对象的run方法,
就必须明确该run方法所属对象,所以要把 mt传到Thread的构造方法中
作者: niceBoy    时间: 2012-4-6 23:40
怎么理解把mt传到Thread的构造方法中:因为线程必须实现run方法,mt传到Thread的构造方法中是为了指定线程要执行哪个对象的run方法
作者: 刘_浩    时间: 2012-4-7 10:59
Thread t = new Thread(mt),这样就创那好了一个线程,但是仅是一个线程,必在有类去实现在Runnable。mt只能代表一个对象,t代表的是一个线程,Runnble是Thread已实现的接口,所以Runnble和Thread已经有关系了;然后对象mt与Runnable也是有关系的;所以对象mt和Thread也有了关系。Thread中有一个带参加的构造函数。也就是对应该创建的Thread t = new Thread(mt);。说得太多了,希望你能明白。




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