线程与多线程

什么是线程?

线程(Thread)是进程中的基本执行单元,是操作系统分配CPU时间的基本单位,一个进程可以包含若干个线程,在进程入口执行的第一个线程被视为这个进程的主线程。

进程和线程的区别?

进程(Process)是Windows系统中的一个基本概念,它包含着一个运行程序所需要的资源。一个正在运行的应用程序在操作系统中被视为一个进程,进程可以包括一个或多个线程。线程是操作系统分配处理器时间的基本单元,在进程中可以有多个线程同时执行代码。进程之间是相对独立的,一个进程无法访问另一个进程的数据(除非利用分布式计算方式),一个进程运行的失败也不会影响其他进程的运行,Windows系统就是利用进程把工作划分为多个独立的区域的。进程可以理解为一个程序的基本边界。是应用程序的一个运行例程,是应用程序的一次动态执行过程。

线程的操作

了解System.Threading.Thread类

Thread(ParameterizedThreadStart)
Thread(ParameterizedThreadStart,Int32)
Thread(ThreadStart)
Thread(ThreadStart,Int32)
ParameterizedThreadStart委托的参数类型必须是Object的。如果使用的是不带参数的委托,不能使用带参数的Start方法运行线程,否则系统会抛出异常。但使用带参数的委托,可以使用thread.Start()来运行线程,这时所传递的参数值为null。

线程定义

Thread thread=new Thread(new ThreadStart(method));//创建线程

thread.Start(); //启动线程

线程常用属性

CurrentContext
CurrentThread
ExecutionContext
IsBackground
IsAlive
IsBackground
IsThreadPoolThread
ManagedThreadId
Name
Priority
ThreadState

线程优先级

优先级越高表示CPU分配给该线程的时间片越多,执行时间就多
优先级越低表示CPU分配给该线程的时间片越少,执行时间就少

常用方法

Abort() 终止线程
GetDomain() 返回当前线程正在其中运行的当前域
GetDomainId() 返回当前线程正在其中运行的当前域Id
Interrupt() 中断处于WaitSleepJoin线程状态的线程
Join()已重载,阻塞调用线程,知道某个线程终止时为止
Resume()继续运行挂起的线程
Start()执行本线程
Suspend()挂起当前线程,如果当前线程已属于挂起状态则此不起作用
Sleep()把正在运行的线程挂起一段时间

多线程编程

优点:

可以同时完成多个任务;可以使程序的响应速度更快;可以让占用大量处理时间的任务或当前没有进行处理的任务定期将处理时间让给别的任务;可以随时停止任务;可以设置每个任务的优先级以优化程序性能。

缺点:

线程也是程序,所以线程需要占用内存,线程越多,占用内存也越多。
多线程需要协调和管理,所以需要占用CPU时间以便跟踪线程。
线程之间对共享资源的访问会相互影响,必须解决争用共享资源的问题。
线程太多会导致控制太复杂,最终可能造成很多程序缺陷。
线程同步与安全性

lock(object obj)

lock的是必须是引用类型的对象,string类型除外。
lock推荐的做法是使用静态的、只读的、私有的对象。
保证lock的对象在外部无法修改才有意义,如果lock的对象在外部改变了,对其他线程就会畅通无阻,失去了lock的意义。

Monitor

Enter(Object) 在指定对象上获取排他锁。
Exit(Object) 释放指定对象上的排他锁。
Pulse 通知等待队列中的线程锁定对象状态的更改。
PulseAll 通知所有的等待线程对象状态的更改。
TryEnter(Object) 试图获取指定对象的排他锁。
TryEnter(Object, Boolean) 尝试获取指定对象上的排他锁,并自动设置一个值,指示是否得到了该锁。
Wait(

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值