这几天看多线程在.net下的实现,其中有Thread.Sleep(int)和Join(int)方法
请问两者有什么不同?

解决方案 »

  1.   

    当线程Sleep时,系统就退出执行队列一段时间,当睡眠结束时,系统会产生一个时钟中断,从而
    使线程回到执行队列中,从而恢复线程的执行。如果父线程先于子线程结束,那么子线程将在父线程结束的同时被迫结束。Thread.Join()方法使父线程等待,直到子线程结束。
      

  2.   

    总之,sleep是退出执行,join()是等待执行完
      

  3.   

    这样的问题还是看msdn吧参考:
    http://www.c-sharpcorner.com/Multithreading.asp
    http://www.anticipatingminds.com/Content/Products/devAdvantage/KnowledgePacks/Threading/ThreadingKnowledgePack.aspx
    http://www.manbu.net/article.asp?id=41
    里面的文章对你会有帮助的
      

  4.   

    diandian82(点点) 说的我有点明白了,还有点疑问的是:我有段这样的代码
    //.....
    class Test 
    {
    private int i;//用来递增
    static void Main()
    {
    CreateThreadAndStart();
    }private void CreateThreadAndStart()
    {
    Thread t;
    t=new Thread(new ThreadStart(Increment));
    t.Start();
    }private void Increment()
    {
    for(i=0;i<100000;i++)
    {
    Console.WriteLine(i.ToString());
    }
    }}
    然后我在i还没有递增到100000时想方法调用Thread.Sleep(1000);这样的语句,控制台中就显示i值不变了我的问题是,Sleep(int)是一个静态方法,那现在处于睡觉状态的是哪个线程啊?
    而Join(int)是一个类方法,那我用这样的
    Cobj.Join(1000);//Cobj是一个类实例
    让暂时挂起的又是哪个线程呢?谢谢楼上几位:)搞定问题就给分:)
      

  5.   

    谁调用SLEEP谁就是处于睡觉状态。
    Cobj.Join(1000)挂起父线程