我现在有30万条数据需要处理并写入数据库,方法是用多线程,批量开启线程的代码如下:
Thread[] threads = new Thread[x];//批量开启x个线程
for (int i = 0; i < x; i++)
{
threads[i] = new Thread(new ParameterizedThreadStart(Getxqy));
threads[i].Name = (i + 1).ToString();
threads[i].IsBackground = true;
threads[i].Start(chaiArr[i]);
}
Getxqy是主体方法,chaiArr[i]是需要处理的数据集合,关键是用多线程处理也需要很长的时间,我该如何挂起或者结束正在运行的所有线程?求指教!!!
如果刚好你的线程主体里面是类似下面的代码:
While(true)
{
...
}
可以用 ManualResetEvent
While(true)
{
...
event.WaitOne();
...
}
要停止的话就event.Reset();
弄清楚线程模型就行了.真写代码的时候都直接用并行运算/task来实现的不会真的去用Thread对象的
给几个关键字:
Parallel.Foreach
CountdownEvent
CancellationToken
ThreadPool
线程并不是开的越多越好,用task