线程学习

处理器在切换到下一个线程之前,执行一个特定线程的时间周期称为时间片或量子。在一个给定的内核中改换执行线程的动作称为上下文切换。

Join ()方法:使一个线程等待另一个线程。(它告诉操作系统暂停执行当前线程,直到另一个线程终止);

IsBackGround: 新线程默认为“前台”线程;操作系统将在进程的所有前台线程完成后终止进程。可将thread。IsBackGround属性设为true,从而将线程标记为"后台"线程。这样,即使后台线程仍在运行,操作系统也运行进程终止;

Priorty: 每个线程都关联了优先级,可将Priority属性设为新的ThreadPriority枚举值(Lowest,BelowNormal,Normal,AboveNormal或Highest),从而增大或减小线程的优先级。操作系统倾向于将时间片调拨给高优先级线程。注意:如果优先级设置不当,可能会出现“饥饿”情况,即一个高优先级线程快乐的运行,而其他许多低优先级线程只能眼睁睁看着它。

ThreadState: 如果只是想知道一个线程是还“或者”,还是已完成了所有的工作,可以是布尔值IsAlive.更全面的线程状态可通过ThreadState属性访问,ThreadState枚举值包括Aborted

,AbortRequested,BackGround,Running,Stopped,StopRequested,Supended,SuspendRequested,Unstarted和WaitSleepJoin.这些都是标志(flag),有的可以组合,有两个常用

(而且经常被滥用)的方法是Sleep()和Abort()

静态方法Thread.Sleep()使当前线程进入睡眠-----其实就是告诉操作系统在指定时间内不要为该线程调度时间片。

Thread对象的Abort()方法一旦执行,就会尝试销毁线程。它造成"运行时"在线程中引发ThreadAbortException异常

 

posted @ 2019-08-13 09:18  熊先生  阅读(99)  评论(0编辑  收藏  举报