论坛首页 Java企业应用论坛

一个无法解释的线程问题

浏览 1181 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2011-04-17   最后修改:2011-04-17
程序大体是这样的,由主线程启动一个子线程,子线程代码如下
@Override
	public void run() {
		while(true){
			
			try {
				Thread.sleep(60000);
				send();
			} catch (Exception e) {
				e.printStackTrace();
			}
			
		}
		
	}
	
	public static void send() throws UnsupportedEncodingException{
		System.out.println("心跳包-------------------------------:"+YYYYmmdd.getNow());
		Collection<QQUser> qqes= SessionContex.getQQList();
		Iterator<QQUser>  it  =  qqes.iterator();  //  获得一个迭代子   
		while(it.hasNext())  {   
			QQUser  qq  =  it.next();  //  得到下一个元素   
			if(qq.isLogin()){
				qq.setCommand(0x58);//设置心跳包
				byte[] send = (qq.getQq() + "").getBytes("UTF-8");
				qq.setSend(send);
			Connector connector=	SessionContex.getConnector(qq.getQq());
			connector.getSession().write(qq);
			}
		}   

而子线程没有用到大规模计算切只有一个,与同步锁无关,按理说应该1分钟执行一次。运行了几个小时正常,睡觉醒了,打开屏幕锁发现最后一个1个包是刚刚打开11点左右发的,而之前一个是7点过才发送的,这之间差了几个小时,很奇怪这几个小时去哪儿了,实在想不出来,有种推测是win7锁屏幕后线程会被休眠,有这种可能吗?
日志如下
心跳包-------------------------------:20110417071548
logintimes:14
使用默认编码器 命令为:0058
encode QQ[xx] data to ip:/58.60.14.108:8000
02 21 07 00 58 04 aa 1f 67 5f e9 02 00 00 00 01 
01 01 00 00 64 58 9b f9 9e 14 53 b8 ee 07 25 57 
00 4f f2 4c 2d 7a 93 3e b7 fe 21 2d 7f f2 03 
decode:
02 21 07 00 58 04 AA 1F 67 5F E9 00 00 00 3A C9 
1C 8D D6 41 FE 01 B5 8F 04 47 0B 87 63 C8 C8 C7 
87 4B C6 AB E0 A4 7C 0D 2C AD C0 24 BA 03 03 
address:/58.60.14.108:8000
decode loginTimes:14. command: 58
logintimes:14
decode:
02 21 07 00 17 E1 B0 1F 67 5F E9 4C 10 01 8B A0 
E5 9B 07 9B B9 0D 90 55 00 26 FA 36 B7 56 A1 69 
68 DC C3 A6 F6 06 8F 14 08 82 01 22 A7 EE 2F 4C 
FD DB A7 5E 9E 99 03 
address:/58.60.14.108:8000
decode loginTimes:14. command: 17
key:687269684b7676646663536866633356
17尝试按群消息转换出错了
logintimes:14
encode QQ[xx] data to ip:/58.60.14.108:8000
02 21 07 00 17 e1 b0 1f 67 5f e9 02 00 00 00 01 
01 01 00 00 64 58 ac c1 c7 4f ec 7a 41 4b 6f 2b 
0f 47 71 b4 20 0a b2 62 83 fe 96 ad fc ed 40 55 
49 92 eb a5 85 dd 03 
心跳包-------------------------------:20110417071648
logintimes:14
使用默认编码器 命令为:0058
encode QQ[xx] data to ip:/58.60.14.108:8000
02 21 07 00 58 25 e8 1f 67 5f e9 02 00 00 00 01 
01 01 00 00 64 58 45 a8 07 72 9b 5b 3f 60 18 e3 
64 e8 21 1a e4 79 42 94 27 ac c0 d2 c7 d1 03 
decode:
02 21 07 00 58 25 E8 1F 67 5F E9 00 00 00 66 72 
CC 83 FF 8B 5B D1 D4 67 EB 8C 1F 3E A1 9C 37 E5 
68 0B 32 2F DA 23 4E 1F 40 0A 5D 63 4D 48 03 
address:/58.60.14.108:8000
decode loginTimes:14. command: 58
logintimes:14
decode:
02 21 07 00 17 E1 B1 1F 67 5F E9 4C 10 01 9D 2F 
8A D8 15 B6 FE A9 45 FF 18 33 E8 35 A6 73 B4 23 
25 4D 30 EE 89 6D 90 16 3D 49 6D 30 B9 DF 90 55 
F6 71 27 DE FE 16 03 
address:/58.60.14.108:8000
decode loginTimes:14. command: 17
key:687269684b7676646663536866633356
17尝试按群消息转换出错了
logintimes:14
encode QQ[xx] data to ip:/58.60.14.108:8000
02 21 07 00 17 e1 b1 1f 67 5f e9 02 00 00 00 01 
01 01 00 00 64 58 1c e9 12 41 b6 c6 f6 96 08 25 
46 1a 59 32 25 10 29 a0 e8 4c 4f 50 f7 54 16 11 
73 8b 5f 0a 80 e9 03 
心跳包-------------------------------:20110417114337
logintimes:14
使用默认编码器 命令为:0058
encode QQ[xx] data to ip:/58.60.14.108:8000
02 21 07 00 58 04 dd 1f 67 5f e9 02 00 00 00 01 
01 01 00 00 64 58 f1 aa 0a ce 1a f0 b4 c9 f5 28 
3a 92 43 16 7e 32 53 84 e1 94 ce bb 99 f6 03 
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics