Lesson 7: C#多线程
C#多线程
1、适用于:
通过网络进行通信
执行占用时间的操作
区分具有不同优先级的任务
使用户界面在执行后台任务时能快速响应用户的交互
2、Thread类常用属性及方法
属性:
IsAlive:显示当前线程执行状态
IsBackground:是否为后台进程
Name:获取或设置线程名称
ThreadState:获取当前线程状态
方法:
Thread:构造函数,线程启动时传递给线程的委托
Abort:调用时,引发ThreadAbortException,开始终止此线程
Join:阻止调用线程,直到某个线程终止时为止
ResetAbort:取消当前线程请求的Abort
Sleep:设定线程阻塞指定的毫秒数
Start:开始执行
3、线程的状态:

4、启动线程:
1) 创建线程实例:
如上图所示,调用Thread类的构造方法,就会实例化一个线程实例,但未创建实际的线程,此时线程处于Unstarted状态。
创建线程实例常用:Thread t = new Thread(线程方法);
并将线程实例委托执行线程的方法:void 线程方法 () || void 线程方法(object)
2) 创建线程
t.Start();
t.Start(Object obj);
5、暂停线程:
Thread.sleep(1000);
6、合并线程:
如果一个线程 t1 在执行过程中,需要等待另一个线程t2结束后,才能继续执行,那么可以在 t1 的代码中调用 Join 方法
例如:t2.Join();
7、终止线程:
强行终止线程:.Abort()
自然终止:当委托方法结束后,线程随之结束。
待续。。。
Lesson 7: C#多线程的更多相关文章
- JAVA学习之路(多线程)---模拟售票(细解)
首先看题目描述: 假设有火车票100张,创建4个线程模拟4个售票点,每100ms售出一张,打印出售票过程,格式如下: 窗口3:卖出第100张票 窗口4:卖出第99张票 ............ ... ...
- windows 和 linux 多线程
学习了几天多线程技术,做个总结,便于记忆. 一般 多线程传递参数 为 void* 所以会有一个强制转换过程 (int*) (void *)等,传递多个参数选择 结构体指针.为了避免多个线程访问数据 ...
- 【优雅代码】04-1行代码完成多线程,别再写runnable了
[优雅代码]04-1行代码完成多线程,别再写runnable了 欢迎关注b站账号/公众号[六边形战士夏宁],一个要把各项指标拉满的男人.该文章已在github目录收录. 屏幕前的大帅比和大漂亮如果有帮 ...
- Python中的多进程与多线程(一)
一.背景 最近在Azkaban的测试工作中,需要在测试环境下模拟线上的调度场景进行稳定性测试.故而重操python旧业,通过python编写脚本来构造类似线上的调度场景.在脚本编写过程中,碰到这样一个 ...
- 多线程爬坑之路-Thread和Runable源码解析之基本方法的运用实例
前面的文章:多线程爬坑之路-学习多线程需要来了解哪些东西?(concurrent并发包的数据结构和线程池,Locks锁,Atomic原子类) 多线程爬坑之路-Thread和Runable源码解析 前面 ...
- 多线程爬坑之路-学习多线程需要来了解哪些东西?(concurrent并发包的数据结构和线程池,Locks锁,Atomic原子类)
前言:刚学习了一段机器学习,最近需要重构一个java项目,又赶过来看java.大多是线程代码,没办法,那时候总觉得多线程是个很难的部分很少用到,所以一直没下决定去啃,那些年留下的坑,总是得自己跳进去填 ...
- Java多线程
一:进程与线程 概述:几乎任何的操作系统都支持运行多个任务,通常一个任务就是一个程序,而一个程序就是一个进程.当一个进程运行时,内部可能包括多个顺序执行流,每个顺序执行流就是一个线程. 进程:进程 ...
- .NET基础拾遗(5)多线程开发基础
Index : (1)类型语法.内存管理和垃圾回收基础 (2)面向对象的实现和异常的处理基础 (3)字符串.集合与流 (4)委托.事件.反射与特性 (5)多线程开发基础 (6)ADO.NET与数据库开 ...
- Java多线程基础——对象及变量并发访问
在开发多线程程序时,如果每个多线程处理的事情都不一样,每个线程都互不相关,这样开发的过程就非常轻松.但是很多时候,多线程程序是需要同时访问同一个对象,或者变量的.这样,一个对象同时被多个线程访问,会出 ...
随机推荐
- 面试题 LazyMan 的Rxjs实现方式
前言 笔者昨天在做某公司的线上笔试题的时候遇到了最后一道关于如何实现LazyMan的试题,题目如下 实现一个LazyMan,可以按照以下方式调用:LazyMan("Hank")输出 ...
- js中break跳出多层循环
// 当执行多重循环的时候break的情况 outer: for(var i=0;i<10;i++){ inter: for(var j=0;j<10;j++){ if(i>5){ ...
- JZOJ 1738. Heatwave
Description 给你N个点的无向连通图,图中有M条边,第j条边的长度为: d_j. 现在有 K个询问. 每个询问的格式是:A B,表示询问从A点走到B点的所有路径中,最长的边最小值是多少? I ...
- python-无参函数
#!/usr/local/bin/python3 # -*- coding:utf-8 -*- ''' #-----------定义函数---------- def func1(): "te ...
- Java实现系统目录实时监听更新。
SDK1.7新增的nio WatchService能完美解决这个问题.美中不足是如果部署在window系统下会出现莫名其妙的文件夹占用异常导致子目录监听失效,linux下则完美运行.这个问题着实让人头 ...
- STM32遇到的问题
1.GPIO输出实验的时候,原来的库和现成的源代码有出入?导致实验现象不同,delay_ms,主要集中在这个函数上面 2.按键输入的时候,LED和KEY 初始化全部放在主函数,有按下按键以后,灯闪烁不 ...
- unity3d中C#与JS的一些区别
unity3d目前支持C#和JS两种脚本语言. 学习过程中发现很多教程使用的是JS语言,自己还是用C#比较多,unity原生使用的是Mono,使用C#会更加接近unity的编程思想. 1.方法的定义, ...
- 【Decision Tree】林轩田机器学习技法
首先沿着上节课的AdaBoost-Stump的思路,介绍了Decision Tree的路数: AdaBoost和Decision Tree都是对弱分类器的组合: 1)AdaBoost是分类的时候,让所 ...
- Velocity 语法详解
Velocity是基于Java的模板引擎,它允许页面设计者引用Java中定义的方法.页面设计者和Java开发者能够同时使用MVC的模式开发网站,这样网页设计者能够把精力放在页面的设计上,程序员也可以把 ...
- C#帮助类
1.集合操作 // <summary> /// 判断一个集合是否包含某个值 /// </summary> /// <typeparam name="T" ...