预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共25页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

多线程编程进程(process)和线程(thread)多线程(Multi-thread)的概念多线程是指程序中包含多个执行流,即在一个程序中可以同时运行多个不同的线程来执行不同的任务,也就是说,允许单个程序创建多个并行执行的线程来完成各自的任务。 浏览器就是一个很好的多线程例子,在浏览器中可以在下载Java小应用程序或图像的同时滚动页面,在访问新页面时播放动画、声音并打印文件等。 线程的namespace程序1:显示线程状态线程的创建程序2:创建线程CreateThread然后在Main()函数的while循环中,我们使用静态方法Thread.Sleep()让主线程暂停了1ms,这段时间CPU转向执行线程oThread。然后我们试图用Thread.Abort()方法终止线程oThread,注意后面的oThread.Join(),Thread.Join()方法将使主线程等待,直到oThread线程结束为止。可以给Thread.Join()方法指定一个int型的参数作为等待的最长时间。之后,我们试图用Thread.Start()方法重新启动线程oThread,但是使用Abort()方法的后果是不可恢复地终止线程,所以最后程序会抛出ThreadStateException异常Thread.ThreadState这个属性,它代表了线程运行时的状态,在不同的情况下有不同的值.ThreadState在各种情况下的可能取值如下:线程的优先级用多线程编制局域网聊天线程的同步和通信Lock程序4:Ex9-1Join等待 Join()使主线程等待,直至子线程完成 Suspend挂起线程 Resume恢复线程运行 !Resume必须和Suspend成对 !停止(运行完成或被终止)的线程不可以再start,须重新new生成实例 线程池和定时器线程池定时器第1个参数指定TimerCallback代理对象;第2个参数的意义跟上面提到的WaitCallback代理对象一样,作为一个对象传递给要调用的方法,表示状态;第3个参数是延迟时间——计时开始的时刻距现在的时间,单位是毫秒;第4个参数是定时器的时间间隔——计时开始以后,每隔相同的一段时间,TimerCallback所代表的方法被调用一次,单位也是毫秒。上面语句的意思就是将定时器的延迟时间和时间间隔都设为1秒钟。 定时器的设置是可以改变的,调用Timer.Change()方法即可,这是一个参数类型重载的方法,一般使用的原型如下: publicboolChange(long,long); 下面这行代码将前边设置的定时器修改了一下: timer.Change(10000,2000); 显然,定时器timer的时间间隔被重新设置为2秒,停止计时10秒后生效。互斥对象这种情况下,我们要用到互斥对象,即System.Threading命名空间中的Mutex类。我们可以把Mutex看作一个出租车,乘客就是线程,他首先等车,然后上车,最后下车。当一个乘客在车上时,其他乘客只有等他下车以后才可以上车。线程与Mutex对象的关系也是如此,线程使用Mutex.WaitOne()方法等待Mutex对象被释放,一旦Mutex对象被释放,它就自动拥有这个对象,直到它调用Mutex.ReleaseMutex()方法释放这个对象,而在此期间,其他想要获取这个Mutex对象的线程只有等待。