黑马程序员技术交流社区
标题:
线程的一个疑问
[打印本页]
作者:
王针
时间:
2012-6-3 20:48
标题:
线程的一个疑问
看到线程这里的时候有很多地方不懂。
首先默认的线程创建了循环监听客户端连接的线程,然后在这个线程的里面又创建了一个用于循环接收客户端消息线程...
那是不是可以认为循环监听线程的父线程是默认的UI线程,循环接受消息的父线程是监听的那个线程呢?
用于监听的线程如果意外中止,那么接受消息的线程是不是就会自动停止。
作者:
蒋春
时间:
2012-6-4 22:03
主线程:threadA
监听线程:threadB
接收数据的线程:threadC
不同的线程去执行不同的方法,但是几个线程同时在运行,只需要把线程设置为主线程,但其中一个线程终止的时候,其它的线程也会终止;
循环监听的Accept()方法会堵塞线程,所以我们要创建一个新的线程去执行循环监听客户端的请求;
当监听请求的时候,我们要去循环接收客户端发送的数据,在接收数据的方法Receive()也会堵塞线程,所以现在又要创建一个线程去执行接收客户端的发送的数据;
现在出现三个线程,在监听客户端的请求的时候我们如果不去创建一个线程去监听,那么窗体的主线程会被堵塞,导致窗体不能活动(threadA线程会被堵塞);
当一个客户端连接上了的时候,使用了Receive()方法接收,如果不使用独一的线程去执行此方法,那么他会堵塞监听的线程(threadB线程会被赌赛),一但监听线程被堵塞了就没有没有方法去监听客户端的请求了,当第二客户端请求来了的时候,会出现连接不上的,所以还是要创建接收数据的线程(threadC);
在这里简单的阐述了三个线程的关系
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2