看不懂你的问题。
start() 之后会自动调用 run 的。
必须要 new Thread(..) 之后才会产生一个新线程

解决方案 »

  1.   

    调用一个方法不会起动一个线程 须要 new Thread(..)
      

  2.   

    既然是这样,请大家注意了,我想要做多个处理,每个处理都分别是一个方法,那么按照做Thread子类的方法的话, run就要写多个,显然在一个Thread子类里是不可能的。请问,有什么办法能够让我像调用一般方法一样的启动每一个线程呢?使用匿名类,子类还是内部类?大家能解释一下吗?
      

  3.   

    给你一个多线程的例子,我用来在我的机器(win2003 + P2.4 + 512M) 使用默认参数运行.
    在创建了约 7200 个线程后,内存溢出,main 线程结束.大家可以试试,看看自己的机器能创建多少线程.public class ThreadTest {
    public static void main(String[] args) {
    int i = 0;
    while(true) {

    Runnable ra = new Runnable(){
    public void run() {
    while(true) {
    System.out.print(Thread.currentThread().toString());
    try {
    Thread.sleep(100000);
    } catch (InterruptedException ie) {
    }
    }
    }
    };
    Thread thread = new Thread(ra,"T"+i);
    thread.start();
    System.out.print(++i+"  ");
    }
    }
    }
      

  4.   


    一个笨办法
    new Mythread的时候传一个参数进去不就行了吗?Thread th=new MyThread(FUNC1)run()
    {
     case FUNC1
       myFunc1();
     break;
    }大致就是这样
      

  5.   

    一般来说,在处理GUI的应用程序时,使用哪一种方式来处理比较合理呢?
      

  6.   

    我理解你说的意思是在main里边调用其它的方法?如果是这样,那么,这个是main线程调用的,其它的new Thread()的线程周期是:start ==>run结束,就消亡了。你可以看看线程的生命周期。-------------------------------------------------------------------
    如果,我在构造器里start(),那么,调用其它的方法也是会多线程处理吗?
      

  7.   

    你需要做多个处理..
    那么首先要看看你的多个处理是否需要多线程来完成。假设你有个处理A,B,C
    你的多个处理之间相互关联么?比如:你需要在C运行到某一时刻后调用B的处理结果,或者C和B需要交互处理,那么你需要多线程操作,按照你的处理方式,你需要3条处理线程来同时进行3个处理,你需要建立3个程序A,B,C都继承于Thread.
    A a = new A();
    B b = new B();
    C c = new C();
    a.start();
    b.start();
    c.start();
    如果你的A,B,C完全是独立的,没有任何关联的方法,你完全可以在一个线程里完成这三个处理,没必要用道多线程,如果你需要空出主线程的话,可以通过程序D来完成所有的处理
    public class D extends Thread
    {
        public D(){}
        public void run()
        {
           a();
           b();
           c();
         }
        a(){}
        b(){}
        c(){}
    }
    -----------------
    D d = new D();
    d.start();