Thread问题
int i = 0;Thread threadA;
//数字变化滚动方法
public void startA()
{
while (true)
{
Random r = new Random();
i = r.Next(num);
Thread.Sleep(10);
}
}
private void button7_Click(object sender, EventArgs e)
{
for (int aa = 1; aa < 4; aa++)
{
threadA = new Thread(new ThreadStart(startA));
threadA.Start();
threadA.Abort();
MessageBox.Show(i.ToString());
}
}
为什么取得i的值老是0? --------------------编程问答-------------------- New Random放到循环外,另外num是多少 --------------------编程问答-------------------- 另外,根据我的经验,如果4个进程同时执行而在使用i时,没有对它进行lock,几乎所有线程是同时访问其中的代码,再加之你的Random是在线程执行的方法中初始化的,这就会造成两个可能性问题:
1、同时初始化,起始值完全相同,你的问题应该属于这一种,所以全是0;
2、每个线程产生的随机数相同,这个我在QQ的问问中看到有人问过,当时我帮他想的方法是用线程等待,不要多个线程同时启动。
补充:.NET技术 , C#