怎么样才能往TimerTask类里面传送变量值呢,附部分程序供各位高手品鉴

cds1 2007-09-19 01:14:43
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值传到每个线程里面,需要什么构造方法

...全文
214 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
cds1 2007-09-20
  • 打赏
  • 举报
回复
谢谢 楼上兄弟的指点,送分



import java.util.Timer;
import java.util.TimerTask;
import java.io.*;

public class FormLoginDemo
{

private final static long JOB_INTERNAL=1000*10;
public static void main(String[] args) throws Exception
{
Timer timer=new Timer();
for(int j=0;j<2;j++)
{
timer.scheduleAtFixedRate((TimerTask) new MyTask(j), 0, JOB_INTERNAL);
}
}
}



class MyTask extends TimerTask
{
private int i;
public MyTask(int i)
{
this.i = i;
}
public void run()
{

System.out.println(this.i);

}

}
混沌骑士 2007-09-19
  • 打赏
  • 举报
回复
class MyTask extends TimerTask
{
private int i;
public MyTask(int i)
{
this.i = i;
}
public void run()
{

System.out.println(this.i);

}

}

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧