日期:2014-05-20  浏览次数:20731 次

怎么样才能往TimerTask类里面传送变量值呢,附部分程序供各位高手品鉴
import   org.apache.commons.httpclient.*;
import   org.apache.commons.httpclient.methods.*;
import       java.util.Timer;        
import       java.util.TimerTask;
import   java.io.*;  

public   class   FormLoginDemo  
{

public   static   int   h=0;
        public   static   void   main(String[]   args)   throws   Exception
        {  
        for(int   j=0;j <2;j++)
        {
        timer.scheduleAtFixedRate((TimerTask)       new       MyTask(),       0,       JOB_INTERNAL);
                  h=j;
        }
        }
}


class   MyTask   extends   TimerTask    
{      
       
    public   void   run()    
    {

          System.out.println(FormLoginDemo.h);

    }  

}

我的目的是想把主程序产生的h值传到所建立的线程里面去,每建立一个线程就传一个不同的值h+1给它,
但是上面的程序无法完成我的要求,
因为当第二个进程正在建立的时候,h值有可能已经不是1了,而是变成了2,此时线程再去读取h值,那么所取的这个值已经不是我所要的了,
即本来我要求的结果是:
0
1
而实际上即是
0
2

问下大家怎么样才能把特定的h值传到每个线程里面,需要什么构造方法



------解决方案--------------------
class MyTask extends TimerTask
{
private int i;
public MyTask(int i)
{
this.i = i;
}
public void run()
{

System.out.println(this.i);

}

}