线程这东西已经关注好久了。以前只是偶尔看看。最近一个项目(大文件传输)感觉要用到多线程。所以这次打算把它搞懂(不但会看,还会写。因为有时候会看。不一定会写)
打算先看一些简单的教程
看了以上代码。有几个地方不太懂
1: Thread oThread = new Thread(new ThreadStart(oAlpha.Beta)); 是不是还有其它的写法
2:while (!oThread.IsAlive)
Thread.Sleep(1);
翻Msdn得:Thread.IsAlive 属性:获取一个值,该值指示当前线程的执行状态。
那上面那个句话是不是指。当没有执行状态的时候,当前线程暂停1毫秒?
自己的理解:当没有其它线程执行的时候。主线程暂停1毫秒。把控制权交给其它线程
结果:
修改:Thread.Sleep(60);
结果:
修改:Thread.Sleep(10); 删除:th.Abort();
结果:
我们仔细对比。可能就会发现其中的一些东东
执行结果:

怎么会是这个显示顺序呢?查阅网上资料。有人说“线程的执行顺序是不定的,与当时的环境和cpu调度有关” http://topic.csdn.net/u/20090601/08/18e29142-e79c-49ab-8aa1-a912acd2b537.html
郁闷,人家这么说我也只能这么信了。
又出现这个代码。舍意思呀。看注释好像是说 "一直循环直到workerThead这个线程拿到话语权,如果拿不到。就让主线程暂停一毫秒。多少个一毫秒呢?反正直到workerThead这个线程拿到话语权为止"
看来先前的理解还是有点误差。

// Use the Join method to block the current thread
// until the object's thread terminates.
workerThread.Join();这一句又怎么理解呢?翻议说“使用join方法来阻止当前线程(可能是主线程。不知道有没有可能是其它线程),直到该对象(workerThread)的线程终止” 看来如果不想让线程乱执行。得用上这一句




}
}
浙公网安备 33010602011771号