Thead.Join()和Thread.Sleep()
2010-12-30 23:04
197 查看
Thead.Join()和Thread.Sleep()
C#中Thread类包含的两个常用方法:实例方法Join()和静态方法Sleep(),对于Join()的使用以及和Sleep()的区别一直比较迷糊,小结一下。
Thread.Join()
阻塞调用线程,直至某个线程终止。在此期间,被阻塞线程继续执行标准的COM和SendMessage消息泵。该方法使线程状态包含ThreadState.SleepWaitJoin.
该方法可以用来确认某个线程是否结束。如果线程已经结束,则该方法立即返回,否则阻塞直至线程结束。在某些需要等待其他线程执行结束后,继续后续操作时,可以使用该方法。
该方法有2个带参的重载方法,可以指定阻塞的时间。超时或者线程结束时,该方法将返回。
Thread.Sleep(int milliSec)
在指定的时间段内挂起当前线程。此期间不执行的COM和SendMessage消息泵,也不会被系统调度并执行。该方法使线程状态包含ThreadState.SleepWaitJoin.
测试代码
上述测试代码中,在主线程(the calling thread)内调用newThread的Join()方法,导致主线程(the calling thread)被阻塞直至newThread结束,然后主线程继续执行。
C#中Thread类包含的两个常用方法:实例方法Join()和静态方法Sleep(),对于Join()的使用以及和Sleep()的区别一直比较迷糊,小结一下。
Thread.Join()
阻塞调用线程,直至某个线程终止。在此期间,被阻塞线程继续执行标准的COM和SendMessage消息泵。该方法使线程状态包含ThreadState.SleepWaitJoin.
该方法可以用来确认某个线程是否结束。如果线程已经结束,则该方法立即返回,否则阻塞直至线程结束。在某些需要等待其他线程执行结束后,继续后续操作时,可以使用该方法。
该方法有2个带参的重载方法,可以指定阻塞的时间。超时或者线程结束时,该方法将返回。
Thread.Sleep(int milliSec)
在指定的时间段内挂起当前线程。此期间不执行的COM和SendMessage消息泵,也不会被系统调度并执行。该方法使线程状态包含ThreadState.SleepWaitJoin.
测试代码
using System; using System.Threading; public class SleepJoin { public static void Main() { Console.WriteLine("MainThread[" + Thread.CurrentThread.ManagedThreadId + "]"); Thread newThread = new Thread(delegate() { int i = 0; while (++i < 100) { Console.WriteLine("Thread[" + Thread.CurrentThread.ManagedThreadId + "] is running: " + i); Thread.Sleep(10); } }); newThread.Start(); newThread.Join(); Console.WriteLine("newThread finished."); } }
上述测试代码中,在主线程(the calling thread)内调用newThread的Join()方法,导致主线程(the calling thread)被阻塞直至newThread结束,然后主线程继续执行。
相关文章推荐
- Java之Thread线程相关yield()、sleep()、wait()、join()、run和start区别详解
- 并发编程(5)Thread类的使用(sleep/yield/join)
- java多线程—Thread.Join()和Thread.Sleep()
- Thread.Sleep vs. Thread.CurrentThread.Join
- [Java] Thread-01 sleep-join-yield
- [Java] Thread-01 sleep-join-yield
- java Thread sleep yield join wait notify notifyAll
- [Java] Thread-02 sleep-join-yield 图文 对应上一篇文章
- Thread类的简单使用(Start,Sleep,Join,传参)
- [Java] Thread-02 sleep-join-yield 图文 对应上一篇文章
- Thread方法解释(join,sleep,yield,interrupt)
- Thread->sleep、wait、join使用
- Thread.Join()和Thread.Sleep()
- java之Thread线程相关yield()、sleep()、wait()、join()、run和start区别详解
- Thread.Join()和Thread.Sleep()
- 有关Object之wait(),notify() 和notifyAll() 以及Thread之sleep(),join()和yield()
- Java多线程Thread.yield(),thread.join(), Thread.sleep(200),Object.wait(),Object.notify(),Object.notifyAll()的区别
- Thread.sleep 和Object.join的使用
- 并发基础(七) Thread 类的重要的方法--sleep、yeild、join
- java Thread方法解析: sleep join wait notify notifyAll