黑马程序员技术交流社区

标题: 多线程的一题目 [打印本页]

作者: 王小刚    时间: 2012-5-7 21:16
标题: 多线程的一题目
public class Test extends Thread{
    public void start{
          for(int i = 0;i<10;i++){
                System.out.println("i="+i);
      }
   }
     public static void main(String[] args){
           Test test = new Test();
           test.run();
    }
}
求输出结果..
重点是解释下原因...

作者: 蒋映辉    时间: 2012-5-7 21:23
楼主  你的代码是错的  没结果  编译不过  
public void start后面少了括号。加上括号以后的运行结果是没有任何输出。
然后  你是在学多线程吧    Thread的子类中复写的是run方法,然后主类中才用start()方法来启用线程  改了下你的代码

package com.net;

public class Test4 extends Thread{
    public void run(){
          for(int i = 0;i<10;i++){
                System.out.println("i="+i);
      }
   }
     public static void main(String[] args){
           Test4 test = new Test4();
           test.start();
    }
}
这样运行的结果是i=0
i=1
i=2
i=3
i=4
i=5
i=6
i=7
i=8
i=9
作者: 黄或俊    时间: 2012-5-7 21:32
结果为【空】
首先你的start()方法就没有写对哟!后面有括号的
其次非静态方法没有对象调用不执行
你是想了解多线程吗?
多线程的创建方式有两种:
一:继承Thread类重写里面的run()方法,创建自定义类对象,并调用run()方法开启线程;
二:实现Runnable接口,重写run()方法,将自定义类的对象传入Thread类的构造方法中,用Thread类的引用调用run()方法
作者: 永恒之翼网络    时间: 2012-5-7 23:06
楼主的代码有点小问题就  public void start{没有加(),应是下面那样的:
package com.baidu.Map;
public class Test extends Thread{
    public void start(){
          for(int i = 0;i<10;i++){
                System.out.println("i="+i);
      }
   }
     public static void main(String[] args){
           Test test = new Test();
           test.run();
    }
}
程序的运行结果是没有结果,原因继承了Thread类却没重写run方法。继承的run方法只是一个空方法,所以在运行时,在控制台上什么看不到。
作者: 付左军    时间: 2012-5-7 23:16
public class Test extends Thread{
    public void start{//复写run方法,此处错误
          for(int i = 0;i<10;i++){
                System.out.println("i="+i);
      }
   }
     public static void main(String[] args){
           Test test = new Test();
           test.run();//此处调用start();方法开启线程test.run();
    }
}

作者: 李保成    时间: 2012-5-7 23:51
public class Test extends Thread{
    public void start{
          for(int i = 0;i<10;i++){
                System.out.println("i="+i);
      }
   }
     public static void main(String[] args){
           Test test = new Test();
           test.run();
    }
}


看了半天,先不说程序的对错吧,估摸着楼主是把线程中的run()方法和start()方法搞混了吧,run()方法是用来写入你要在线程中执行的内容,而start()是你在创建完一个线程后,启动线程的方式。




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