看例子的时候看到这么一句话:
Thread.Sleep(1000);
请问可以直接调用Thread类的Sleep方法吗?难道不需要实例化一个Thread对象再调用?这样直接调用,到底是哪个线程睡觉呢?

解决方案 »

  1.   

    补充:经过查阅资料,貌似睡觉的是主线程(当前线程)。又有新的问题了,CPU在某一时刻是不是只能执行一个线程?还有,我的代码如下:
    1 Alpha alpha = new Alpha();   
    2 Thread myThread = new Thread(new ThreadStart(alpha.Beta));   
    3 myThread.Start();   
    4 while (!myThread.IsAlive) ;   
    5 Thread.Sleep(3);     
    6 myThread.Abort();     
    7 myThread.Join();     
    8 Console.WriteLine("Press any key to continue\n");     
    9 Console.ReadKey();
    这里Alpha类的Beta方法就是打印一句话。如果我把第5行改成睡1ms的话,屏幕上就只有Press any key to continue,而改成3ms的话,执行Beta方法似乎是概率性的。我猜想Thread.Start方法是不是只是把一个线程加入排队的行列。具体能不能执行,还需要看运气,也就是能不能争到资源。
    另外,Join方法貌似也很匪夷所思。这里线程都Abort了,为啥还要Join呢?国人似乎很喜欢把Join翻译成堵塞,但是我觉得按照英文原意翻不是挺好的吗?不就是让一个线程“加入”另一个线程吗?百思不得其解。
    望解答。
      

  2.   

    Thread.Sleep是静态方法,类方法,不需要实例化的 
      

  3.   

    你的代码睡得是主线程,如果睡子线程应该在alpha.Beta方法里,如果alpha.Beta方法没有循环,子线程执行了就退出了。
      

  4.   

    1.不是“CPU在某一时刻只能执行一个线程”,但是看起来好像是这样...线程是OS的概念,这是分时系统的特性...如果你是计算机专业毕业,不知道就不应该了...如果不是,去补习《操作系统原理》...2.Join方法就是Join方法,没有翻译...所谓“阻塞”指它的执行过程,不要乱钻牛角尖...
      

  5.   

     public static void Sleep (
    int millisecondsTimeout
    )
    线程是操作系统分配CPU运算时间的最小单位。
    对于单CPU机器来说,微观时间内,每个时刻只能一个线程在运行。
    即使对于多CPU机器来说,使用多线程能提高效率
    阻塞的是当前线程. 
    可以这样理解,thread.Join把指定的线程加入到当前线程,合并为单线程. 
      

  6.   

    CPU在某一时刻只能执行一个线程,这只是微观的看法宏观上来说就是在并行运行,你不必在意这句