异步 Thread
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的更多相关文章
- springmvc 文件上传异步处理
springmvc3提供了文件上传异步处理功能,当文件上传时,controller不需要一直等到文件上传成功后再返回视图,而是先返回到servlet容器,待异步处理的线程完成后转向指定视图! 首先要在 ...
- Atitit.并发编程原理与概论 attilax总结
Atitit.并发编程原理与概论 attilax总结 1. 并发一般涉及如下几个方面:2 2. 线程安全性 ( 2.2 原子性 2.3 加锁机制2 2.1. 线程封闭3.3.1Ad-hoc线程封闭 3 ...
- 线程池 队列 synchronized
线程池 BlockingQueue synchronized volatile 本章从线程池到阻塞队列BlockingQueue.从BlockingQueue到synchronized 和 volat ...
- 多线程实现之Java
关于Java线程的生命周期,请看下面这张图: 新建状态(New):当线程对象创建后,即进入了新建状态,如:Thread t = new MyThread(); 就绪状态(Runnable):当调用线程 ...
- 从线程池到synchronized关键字详解
线程池 BlockingQueue synchronized volatile 前段时间看了一篇关于"一名3年工作经验的程序员应该具备的技能"文章,倍受打击.很多熟悉而又陌生的知识 ...
- zookeeper项目使用几点小结
背景 前段时间学习了zookeeper后,在新的项目中刚好派上了用场,我在项目中主要负责分布式任务调度模块的开发,对我自己来说是个不小的挑战. 分布式的任务调度,技术上我们选择了zookeeper,具 ...
- 【iOS】Swift4.0 GCD的使用笔记
https://www.jianshu.com/p/47e45367e524 前言 在Swift4.0版本中GCD的常用方法还是有比较大的改动,这里做个简单的整理汇总. GCD的队列 队列是一种遵循先 ...
- 增加线程异步发送消息的方法一(Thread)
@RequestMapping(value="order/updateOrder.do") public String updateOrder(HttpServletRequest ...
- thread.join 从异步执行变成同步
Java的线程模型为我们提供了更好的解决方案,这就是join方法.在前面已经讨论过,join的功能就是使用线程 从异步执行变成同步执行 当线程变成同步执行后,就和从普通的方法中得到返回数据没有什么区别 ...
随机推荐
- bzoj1941
KD-tree **了这道题 这个估价函数好鬼畜,把min打成max... 关于min的估价函数非常鬼畜,具体我也不知道为什么. #include<bits/stdc++.h> using ...
- 九、myeclipse开发背景保护色设置
window->preferences->Editors->Text Editors->Background color 背景颜色向你推荐: 色调:85.饱和度:1 2 3.亮 ...
- c++函数模板1
1 定义: 函数模板 只适用于参数个数相同但是类型不同 而且函数体相同的情况 2 这个例子没有使用模板的情况 #include <iostream> using namespace std ...
- CSS3:nth-child()伪类选择器,Table表格奇偶数行定义样式
转自爱设计 原文链接http://www.dangshopex.com/jishufenxiang/WEBkaifajishu/8653.html CSS3的强大,让人惊叹,人们在惊喜之余,又不得不为 ...
- C#项目中一些文件类型说明
designer.cs 是窗体设计器生成的代码文件,作用是对窗体上的控件做初始化工作 (在函数InitializeComponent()中)VS2003以前都把这部分代码放到窗体的cs文件中,由于这 ...
- RXJS组件间超越父子关系的相互通信
RXJS组件间超越父子关系的相互通信 用到这个的需求是这样的: 组件A有数据变化,将变化的数据流通知组件B接收这个数据流并做相应的变化 实例化RXJS的subject对象 import { Injec ...
- 51nod - 1188 - 最大公约数之和 V2 - 数论
https://www.51nod.com/Challenge/Problem.html#!#problemId=1188 求\(\sum\limits_{i=1}^{n-1}\sum\limits_ ...
- 201621123016 《Java程序设计》第十二周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 2. 面向系统综合设计-图书馆管理系统或购物车 使用流与文件改造你的图书馆管理系统或购物车. 2.1 简述如何 ...
- Git之常用的命令操作
set LESSCHARSET=utf-8 git设置文件名大小写敏感 git branch -rgit checkout 'TestMaster'git checkout -b 'TestMaste ...
- MecanimControl插件随笔
----------------------------------------- 4个animatorController是怎么回事? 分别对应 1镜像动画速度>0 2镜像播放速度<0 ...