线程为什么会不停的增多 不知道是哪里在不断的增加线程
线程为什么会不断的增多 不知道是哪里在不断的增加线程
Task tsk = new Task(() =>
{
Thread thr;
int a = 0;
while (a < 50)
{
a++;
//ThreadPool.QueueUserWorkItem((b) =>
//{
thr = new Thread(() =>
{
timer.Elapsed += new System.Timers.ElapsedEventHandler((x, y) =>
{
string strtemp = HttpHelper.HttpRequestByPost("http://localhost/Ashx/ResponseFormHandler.ashx", "keys=sfsfs&content=111");
Thread.Sleep(1000);
Console.WriteLine(strtemp);
});
timer.Start();
});
thr.IsBackground = true;
thr.Start();
//});
Thread.Sleep(200);
}
});
tsk.Start();
tsk.ContinueWith((a) =>
{
Console.WriteLine("ok ok");
});
HttpHelper.HttpRequestByPost 内部 thread.sleep(300);
------解决思路----------------------
不断增多是多少,你又是如何得出"不断增多"的结论的?
你把http请求放到了timer里,这不变成即使只有1个线程在工作,也会每秒去请求一次了吗
------解决思路----------------------
开了50个线程只为了给timer上添加50个任务,最后timer每次触发都执行那50个任务,如果在timer下次触发前任务没执行完,timer就会再用一个线程,所以线程在增加。
------解决思路----------------------
你timer间隔3000调用一次,而方法里sleep(4000)
那当然是一次调用没有结束,就会执行下一次的调用
实际上就是前一个线程没有退出,就建立了一个新的线程
Task tsk = new Task(() =>
{
Thread thr;
int a = 0;
while (a < 50)
{
a++;
//ThreadPool.QueueUserWorkItem((b) =>
//{
thr = new Thread(() =>
{
timer.Elapsed += new System.Timers.ElapsedEventHandler((x, y) =>
{
string strtemp = HttpHelper.HttpRequestByPost("http://localhost/Ashx/ResponseFormHandler.ashx", "keys=sfsfs&content=111");
Thread.Sleep(1000);
Console.WriteLine(strtemp);
});
timer.Start();
});
thr.IsBackground = true;
thr.Start();
//});
Thread.Sleep(200);
}
});
tsk.Start();
tsk.ContinueWith((a) =>
{
Console.WriteLine("ok ok");
});
HttpHelper.HttpRequestByPost 内部 thread.sleep(300);
------解决思路----------------------
不断增多是多少,你又是如何得出"不断增多"的结论的?
你把http请求放到了timer里,这不变成即使只有1个线程在工作,也会每秒去请求一次了吗
------解决思路----------------------
开了50个线程只为了给timer上添加50个任务,最后timer每次触发都执行那50个任务,如果在timer下次触发前任务没执行完,timer就会再用一个线程,所以线程在增加。
------解决思路----------------------
你timer间隔3000调用一次,而方法里sleep(4000)
那当然是一次调用没有结束,就会执行下一次的调用
实际上就是前一个线程没有退出,就建立了一个新的线程