作者tas72732002 (葱头)
看板java
标题[问题] 退出程式, Stop Thread 问题
时间Sun Jul 5 00:53:57 2015
状况描述 :
请问一下各位,
以下程式码是我聊天室Client端的Thread, 功能是当接收到Server发出客户列表讯息,
则刷新UI更新名单 ~
我想请问一下, 假设现在Client要关闭UI退出程式, 那要如何关闭ClientConnectThread
(Thread.stop(因不安全所以不使用)),我目前想到的做法是 Client 通知 Server关闭,
Server收到後再返回一个讯息, 这时ClientConnectThread接收到讯息後
则break离开回圈,Thread停止 .
但我觉得这方法不太好, 因为还要等待Server的回覆
疑问 : 有没有办法当我关闭UI, 就直接停止ClientConnectThread ?
public class ClientConnectThread extends Thread
{
public void run()
{
try {
while(true) {
byte[] buf = new byte[5000];
int length = is.read(buf);
String xml = new String(buf, 0, length);
int type = Integer.parseInt(XMLUtil.extracType(xml));
if( type == CharacterUtil.USERT_LIST ) {
List<String> list = XMLUtil.extractUserList(xml);
String users = "";
for(String user : list) {
users += user + "\n";
}
this.chatClient.getJTextArea1().setText(users);
}
}
} catch (Exception ex) {}
}
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 114.34.181.227
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/java/M.1436028839.A.BEE.html
1F:推 omidofor: 停止Thread的方法最好要自己实作,以你这个例子最简单的 07/05 01:01
2F:→ omidofor: 方法就是while(flag),再给一个方法去改变flag 07/05 01:01
3F:推 cjoe: 用 thread 的 interrupt 有什麽问题吗? 07/05 02:15
4F:→ tas72732002: 可是如果是用flag, accept()因为会Block, 07/05 07:52
5F:→ tas72732002: 所以还是需要有收到Stream才会进续往下跑, 你说的 07/05 07:53
6F:→ tas72732002: flag要如何才可以呼叫和改变啊? 07/05 07:54