A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王针 中级黑马   /  2012-6-3 20:48  /  1324 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

看到线程这里的时候有很多地方不懂。
首先默认的线程创建了循环监听客户端连接的线程,然后在这个线程的里面又创建了一个用于循环接收客户端消息线程...
那是不是可以认为循环监听线程的父线程是默认的UI线程,循环接受消息的父线程是监听的那个线程呢?
用于监听的线程如果意外中止,那么接受消息的线程是不是就会自动停止。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

1 个回复

倒序浏览
主线程:threadA
监听线程:threadB
接收数据的线程:threadC
不同的线程去执行不同的方法,但是几个线程同时在运行,只需要把线程设置为主线程,但其中一个线程终止的时候,其它的线程也会终止;
循环监听的Accept()方法会堵塞线程,所以我们要创建一个新的线程去执行循环监听客户端的请求;
当监听请求的时候,我们要去循环接收客户端发送的数据,在接收数据的方法Receive()也会堵塞线程,所以现在又要创建一个线程去执行接收客户端的发送的数据;
现在出现三个线程,在监听客户端的请求的时候我们如果不去创建一个线程去监听,那么窗体的主线程会被堵塞,导致窗体不能活动(threadA线程会被堵塞);
当一个客户端连接上了的时候,使用了Receive()方法接收,如果不使用独一的线程去执行此方法,那么他会堵塞监听的线程(threadB线程会被赌赛),一但监听线程被堵塞了就没有没有方法去监听客户端的请求了,当第二客户端请求来了的时候,会出现连接不上的,所以还是要创建接收数据的线程(threadC);
在这里简单的阐述了三个线程的关系

评分

参与人数 1技术分 +2 收起 理由
宋天琪 + 2

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马