黑马程序员--多线程
来源:互联网 发布:c二维数组初始化为0 编辑:程序博客网 时间:2024/06/06 02:08
---------------------- ASP.Net+Android+IO开发S、.Net培训、期待与您交流! -----------------------
进程与线程
1.一个进程至少一个线程
2.同一个进程的多个线程之间可以“并发”执行
为什么要用多线程
1.让计算机“同时”做多件事
2.后台运行程序,提高程序的运行效率,也不会使主界面出现无响应的情况
3.多线程可以让一个程序“同时”处理多个事情
4.计算机cpu大部分时间处于空闲状态,浪费了cpu资源
单线程带来的问题
我们在一个窗体中两个按钮,一个单线程执行循环,一个是多线程执行循环。当我们点击单线程按钮是,我们的窗体是不能移动的,,被卡死,;而我们点击多线程执行循环的时候,窗体是可以任意拖动的,当循环执行完,显示给用户。
/// <summary> /// 循环 /// </summary> void CountTime() { for (int i = 0; i < 999999999; i++) { } MessageBox.Show("xunhuanwanbi "); } /// <summary> /// 单线程问题 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnSingleThread_Click(object sender, EventArgs e) { CountTime() } /// <summary> /// 多线程解决 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnMulThread_Click(object sender, EventArgs e) { Thread threadFrist = new Thread(CountTime); threadFrist.Start(); }
.net中如何实现多线程
首先为线程写一个方法,方法中就是线程运行所要执行的代码。线程启动,通过委托调用该方法。
产生一个线程的4个步骤
编写产生线程所要执行的方法
引用System.Threading命名空间
实例化Thread类,并传入一个执行线程所要运行方法的委托。(线程已经产生,还未执行)
调用Thread实例的Start方法,标记该线程可以被CPu执行了,具体执行时间有cpu决定
前台线程和后台线程
前台线程:只有所有的前台线程都关闭才能完成程序关闭
后台线程:只要所有的前台线程结束,后台线程自动结束
方法重入
当我们有两个线程时,第一个线程还未执行完,cpu就是终止当前线程,启动另一个线程,交给另一个线程执行。这就是线程重入问题,。
每个线程都是单独执行方法,哪怕调用同一个方法。
执行带参数的方法
/// <summary> /// 要执行的带参数的方法 /// </summary> /// <param name="name"></param> void ShowTxt(object name) { if (name == "") { MessageBox.Show("null"); } else { MessageBox.Show("name=" + name); } } /// <summary> /// 线程执行带参数的方法 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnMulThreadWithPara_Click(object sender, EventArgs e) { Thread ts = new Thread(ShowTxt); ts.IsBackground = true; ts.Start(textBox2.Text); }
详细请查看:http://edu.csdn.net
- 黑马程序员 多线程
- 黑马程序员:多线程
- 黑马程序员-java多线程
- 黑马程序员--java 多线程
- 黑马程序员_java多线程
- 黑马程序员-java多线程
- 黑马程序员_多线程
- 黑马程序员 多线程
- 黑马程序员_JAVA多线程
- 黑马程序员—多线程
- 黑马程序员- 多线程
- 黑马程序员_多线程
- 黑马程序员--多线程
- 黑马程序员_多线程
- 黑马程序员--Java多线程
- 黑马程序员---多线程
- 黑马程序员__多线程
- 黑马程序员_多线程
- Xcode如何编译Debug版和Release版
- LeetCode-First Missing Positive
- RCP: 代码方式设置View为不可关闭样式
- C语言循环输入字符串#结束写入文件
- 最短路,环经典题--根据网上资料整理
- 黑马程序员--多线程
- strcat可用版
- 全排序vs八皇后问题vs三角八皇后
- Objective-c的第一个问题:中缀符,到底什么是函数名,什么是参数?
- 我对互联网营销时代的发展认知
- HDU 4637 Rain on your Fat brother
- EMACS下 弹出窗口式的 Auto-Complete 自动补全工具简单介绍
- adb server is out of date. killing...
- iOS的主要框架介绍