线程
公司有一个问题,在导出的时候数据量超级大! 导出大概需要花费20分钟,现在想节约时间提高用户体验度!那么如何能做到优化呢?
第一个想法就是开启线程:
思想:在一个for循环里,分解for循环的个数
开启四个线程,线程执行的内容相同,但是为了内容不重复,便要做一个分页。因为线程是同时执行的,所以节约时间。
c# 代码:
static void Main(string[] args)
{
int pps = 400000;
Thread[] ths = new Thread[4];
ths[0] = new Thread(() => H3CWiki_NHCTX(0));
ths[1] = new Thread(() => H3CWiki_NHCTX(1));
ths[2] = new Thread(() => H3CWiki_NHCTX(2));
ths[3] = new Thread(() => H3CWiki_NHCTX(3));
foreach (Thread item in ths)
{
item.Start();
}
foreach (Thread item in ths)
{
item.Join();
}
}
//取余
public static int remainder(int i, int j)
{
if (i < j) return i;
else return i % j;
}
/// <summary>
/// 从NHCT中将数据集中到wiki中心库
/// </summary>
/// <param name="x">x进程编号</param>
private static void H3CWiki_NHCTX(int x)
{
string st = "串开始:";
string str = "";
int pps = 400;
int pagesize = 100;
int totalPages = pps / pagesize; // 4
if (pps % pagesize != 0)
{
totalPages = totalPages + 1;
}
for (int i = 1; i <= totalPages; i++)
{
int l = remainder(i, 4); //4个进程
if (l == x)
{
for (int c = 0; c < pagesize; c++)
{
str = str + "+@";
}
}
}
Console.WriteLine(st+str);
Console.ReadKey();
}