public static void main(String args[])
{

            Thread thread=new Thread(){
                     public void run(){
                          for (int i=0;i<200;i++) //循环200次,{
         select se = new select();//这个类本身运行很耗CPU
         se.select(200); 
         Enumeration e = se.ve.elements();
         System.out.println(e.nextElement());//输出一个结果
        }
                          try{sleep(500)}
                          catch(InterruptedException e){}
                     }
            };
            thread.start;
           
}

解决方案 »

  1.   

    sleep(500)->sleep(500);
    thread.start;->thread.start();
      

  2.   

    ajiao(明年今日) 
    你这个还是单一线程呀,只是有一个多线程的壳,实际还是单线程
      

  3.   

    这已经有两个线程了,一个是程序运行的main()函数,
    一个是你需要循环200次的操作。你可以在main()中加入其他的操作,他就可以和这个后台
    的操作同时操作了阿不知道你指的是什么?
      

  4.   

    我指的是分线程执行这个类,让结果得出得快一些。也就是分200个线程执行select这个类,然后得到200个结果
      

  5.   

    在main中:
    String result[] = new String(200);//假设返回的是String
    for(0..200){  
     //因为String是对象,传入它的引用,它会被线程修改,刚好达到返回的目的
      Thread thread = new MyThread(result[i]);
      thread.start();
    }class MyThread extends Thread{
      private String ret = "";
      public MyThread(String s){this.ret=s;}  public void run(){
        .........
        ret = ....;
      }}GOOD LUCK!
      

  6.   

    并不是线程数量越多,就能够带来高的效率!管理过多的线程会对cpu造成额外的负担,一旦线程的个数过多,系统会变得极为缓慢,这个上限
    不是已千为单位,而是以百为单位。我们常用得多线程解决问题一般是: 一个是前台的gui界面,另外一个是后台的操作,就好像我刚才给你举得那个例子(main()函数是前台的线程,后台运行你那200次循环),另外一个就是用多先程
    对共享资源进行同步操作。总之线程绝对不是越多越好
      

  7.   

    那怎么样执行才能让这个类得出的结果快一些呢?
    总不能让200个CPU分别对这个类进行计算吧?
    如果select这个类通过计算后,得出结果的时间大约为2~3秒,那么有没有办法分别计算200次呢?不要等到第一个结果出来之后再计算第2个结果这样的话,速度就非常慢了
    200次*3秒=600秒,我都睡着了。
      

  8.   

    to wks9527(空值异常)
    我不是太明白你说的,能不能详细一些呢?
    select类的结果我把它加到了Vector中,拿出的话就是用select se = new select();
    se.select(200); //放入参数
    System.out.println(se.v.elementAt(0));//打印出来
      

  9.   

    select se = new select();
    se.select(200); //放入参数
    这两个句子需要循环200次吗?每次都是一样的
      

  10.   

    你做不到这一点。
    谁也做不到。
    因为你的每个计算都将耗损CPU的时间。
    他们的总量是定值。
    不是多线程就能解决的问题。这也不该用多线程来解决。多线程完成如下问题模型时,才有意义:
    a b两个过程,如果先行执行a,再执行b,设他们的总时间为ta+tb,
    如果ta与tb中任一个,有io操作等需要等待资源的时间浪费,
    那么,开两个线程分别完成a,b任务,才会节省时间。宗上所诉:你的目的是达不到的。思考的方式也是不对的。线程,不是你想象的这样应用的。
    :)
      

  11.   

    to feiyuegaoshan(飞跃) 
    “因为你的每个计算都将耗损CPU的时间。他们的总量是定值。”
    这个式没有错,不过用多线程我们也可以得到这个效果--开始执行第二个操作不用等到
    第一个操作完成。 dojsp (月下秋风)  的想法没有错不过我不大明白两百次的循环,为什么每次都要做select se = new select();
    se.select(200); 这个重复的操作?
      

  12.   

    这个操作是为了从新执行,让它重新产生结果,如果不select se = new select();的话,产生的结果就一样,呆会我回去把程序贴一下。
      

  13.   

    程序瞒难理解的,不贴了(里面太多的一层套一层了)
    明白大概意思就行了
    修改一下  
    select se = new select();
    for (int i=0;i<200;i++) //循环200次,
    {
      se.select(200); //耗CPU的是select类中的select方法
      System.out.println(se.ve.elementAt(i));//输出一个结果
    }
      

  14.   

    这个select是轮盘赌算法(遗传算法中的)
      

  15.   

    能不能让select方法本身就采用多线程来计算呢?
      

  16.   

    线程不是为了解决速度和性能问题,而是解决并发问题,这是一种数量级的概念。你的select那么耗时,那么算法是否可以值得推敲呢?如果真的无法优化,多cpu是必须的,那么你可以考虑采用分布式,记得深蓝么?这只是一种考虑,要实现之需要一段长路要走。
      

  17.   

    to jxspace,采用分布式是个好主意,但是我还没学到这么深。请多多指教。
    程序我贴出来了
    http://expert.csdn.net/Expert/topic/1795/1795439.xml?temp=.3281061to takecare,我试过select方法本身就采用多线程,但是不知道为什么加入到Vector中的时候会出错。