Threads
最早的版本,微软推荐不要再使用Thread了
thread不支持带返回值的方法
本身也没有线程回调,但是可以自己做一个

private void btnThreads_Click(object sender, EventArgs e)
{
Stopwatch watch = new Stopwatch();
watch.Start();
Console.WriteLine();
Console.WriteLine("********************btnThread_Click Start 主线程id={0}********************", Thread.CurrentThread.ManagedThreadId);
List<Thread> threadList = new List<Thread>();
for (int i = ; i < ; i++)
{
ParameterizedThreadStart method = o => TestThreadWithoutReturn(o.ToString());
Thread thread = new Thread(method);//1. 默认前台线程:程序退出后,计算任务会继续
thread.IsBackground = true;//2. 后台线程:程序退出,计算理解结束
thread.Start(string.Format("btnThread_Click_{0}", i));
threadList.Add(thread);
} //for (int i = 0; i < 5; i++)
//{
// //使用Thread完成多线程回调
// int b = i;
// ParameterizedThreadStart method = o => TestThreadWithoutReturn(o.ToString());//要多线程执行的任务
// Action callback = () => Console.WriteLine("回调 btnAsync_Click_{0}",b);//回调执行的任务
// ThreadStart methodAll = new ThreadStart(() =>
// {
// method.Invoke(string.Format("btnAsync_Click_{0}", b));
// callback.Invoke();
// });
// Thread thread = new Thread(methodAll);
// thread.Start();
// threadList.Add(thread);
//} foreach (var item in threadList )
{
item.Join(); //主线程等待
}
watch.Stop();
Console.WriteLine("********************btnThread_Click End 主线程id={0} {1}********************", Thread.CurrentThread.ManagedThreadId, watch.ElapsedMilliseconds);
Console.WriteLine();
}
        private void TestThreadWithoutReturn(string name)
{
Console.WriteLine("TestThread Start Name={2},当前线程的id:{0},当前时间为{1}", Thread.CurrentThread.ManagedThreadId, DateTime.Now.ToString("hh:mm:ss:fff"), name);
long Sum = ;
for (int i = ; i < ; i++)
{
Sum += i;
}
//Thread.Sleep(2000);
Console.WriteLine("TestThread End Name={2},当前线程的id:{0},当前时间为{1}", Thread.CurrentThread.ManagedThreadId, DateTime.Now.ToString("hh:mm:ss:fff"), name);
}

异步 Thread的更多相关文章

  1. springmvc 文件上传异步处理

    springmvc3提供了文件上传异步处理功能,当文件上传时,controller不需要一直等到文件上传成功后再返回视图,而是先返回到servlet容器,待异步处理的线程完成后转向指定视图! 首先要在 ...

  2. Atitit.并发编程原理与概论 attilax总结

    Atitit.并发编程原理与概论 attilax总结 1. 并发一般涉及如下几个方面:2 2. 线程安全性 ( 2.2 原子性 2.3 加锁机制2 2.1. 线程封闭3.3.1Ad-hoc线程封闭 3 ...

  3. 线程池 队列 synchronized

    线程池 BlockingQueue synchronized volatile 本章从线程池到阻塞队列BlockingQueue.从BlockingQueue到synchronized 和 volat ...

  4. 多线程实现之Java

    关于Java线程的生命周期,请看下面这张图: 新建状态(New):当线程对象创建后,即进入了新建状态,如:Thread t = new MyThread(); 就绪状态(Runnable):当调用线程 ...

  5. 从线程池到synchronized关键字详解

    线程池 BlockingQueue synchronized volatile 前段时间看了一篇关于"一名3年工作经验的程序员应该具备的技能"文章,倍受打击.很多熟悉而又陌生的知识 ...

  6. zookeeper项目使用几点小结

    背景 前段时间学习了zookeeper后,在新的项目中刚好派上了用场,我在项目中主要负责分布式任务调度模块的开发,对我自己来说是个不小的挑战. 分布式的任务调度,技术上我们选择了zookeeper,具 ...

  7. 【iOS】Swift4.0 GCD的使用笔记

    https://www.jianshu.com/p/47e45367e524 前言 在Swift4.0版本中GCD的常用方法还是有比较大的改动,这里做个简单的整理汇总. GCD的队列 队列是一种遵循先 ...

  8. 增加线程异步发送消息的方法一(Thread)

    @RequestMapping(value="order/updateOrder.do") public String updateOrder(HttpServletRequest ...

  9. thread.join 从异步执行变成同步

    Java的线程模型为我们提供了更好的解决方案,这就是join方法.在前面已经讨论过,join的功能就是使用线程 从异步执行变成同步执行 当线程变成同步执行后,就和从普通的方法中得到返回数据没有什么区别 ...

随机推荐

  1. 用Merge存储引擎中间件实现MySQL分表

    觉得一个用Merge存储引擎中间件来实现MySQL分表的方法不错. 可以看下这个博客写的很清楚--> http://www.cnblogs.com/xbq8080/p/6628034.html ...

  2. 下载android sdk

  3. 前端学习之——js解析json数组

    ** 前端学习之——js解析json数组** 解析json数组即对JSONArray的遍历 一.对于标准的json数组如: var result=[{"flag":1," ...

  4. JQuery学习笔记(三)遍历 DOM

    遍历 DOM jQuery 提供了多种遍历 DOM 的方法.遍历方法中最大的种类是树遍历(tree-traversal). 向上父节点parent,向下子节点child,同胞next和pre 缩写搜索 ...

  5. 重温sql 设计的基本三大范式

    第一范式:确保每列的原子性. 如果每列(或者每个属性)都是不可再分的最小数据单元(也称为最小的原子单元),则满足第一范式. 例如:顾客表(姓名.编号.地址.……)其中"地址"列还可 ...

  6. MFC控件:listctrl使用方法总结

    以下未经说明,listctrl默认view 风格为report 相关类及处理函数 MFC:CListCtrl类 SDK:以 “ListView_”开头的一些宏.如 ListView_InsertCol ...

  7. [HNOI2010] 弹飞绵羊 bounce

    标签:分块.题解: 200000,而且标号从0开始,很符合分块的条件啊.看看怎么实现. 首先分成√n个区间,然后如果我们对于每一个位置i,求出一个Next[i]和step[i],分别表示跳到的后一个位 ...

  8. mysql项目实战经验

    一.项目的编码设置   目的:避免出现莫名其妙错误,笔者曾经就碰到因编码不对返回null而浪费大量时间:统一的编码可以减少解析的时间,提高效率 1.1修改my.ini文件 一般在C:\Program ...

  9. react native设置容器阴影

    shadowColor:'#eee',shadowOffset:{h:10,w:10},shadowRadius:3,shadowOpacity:0.8,

  10. "字节跳动杯"2018中国大学生程序设计竞赛-女生专场

    口算训练 #include <iostream> #include <algorithm> #include <cstring> #include <cstd ...