10个线程,越跑越慢,咋回事???
一个 timer1,每次循环会启动10个线程,如下:
private void timer1_Tick(object sender, EventArgs e)
{
Thread1 = new Thread(this.intoDB1);
Thread1.Start();
Thread2 = new Thread(this.intoDB2);
Thread2.Start();
Thread3 = new Thread(this.intoDB3);
Thread3.Start();
Thread4 = new Thread(this.intoDB4);
Thread4.Start();
Thread5 = new Thread(this.intoDB5);
Thread5.Start();
Thread6 = new Thread(this.intoDB6);
Thread6.Start();
Thread7 = new Thread(this.intoDB7);
Thread7.Start();
Thread8 = new Thread(this.intoDB8);
Thread8.Start();
Thread9 = new Thread(this.intoDB9);
Thread9.Start();
Thread10 = new Thread(this.intoDB10);
Thread10.Start();
}
intoDB1到intoDB10的方法内容相同,如下:
private void intoDB1()
{
//用sql语句取出MySql里200条数据
//再用while循环插入到SqServer数据库里
//然后结束此线程
Thread1.Abort();
}
首先设置timer1间隔为30秒。程序运行后,开始10个线程都能够完成自己操作,可随着运行时间的延长,慢慢30秒就不够用了,程序就会报错。
最后去掉timer1,人工单击按钮来启动运行这10个线程,测试发现,随着次数的增多,这10个线程越来越慢,开始取200数据插200数据共用10几秒,最后执行一次需要一分多钟才能把200数据取完插完,这是怎么回事?