`
naner3344
  • 浏览: 4031 次
  • 性别: Icon_minigender_1
  • 来自: 成都
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

一个无法解释的线程问题

阅读更多
程序大体是这样的,由主线程启动一个子线程,子线程代码如下
@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 
分享到:
评论

相关推荐

    Win32多线程程序设计

    1.适合新手作为起步教程,解释清晰,起步要求低,很有价值(内部包含一个Win32多线程程序设计的源代码,书籍40M,无法上传); 2.以前下载的时候多半要下载到很多看不了,解压出错的东西,这次我将自己手里的资料...

    Python多线程编程(一):threading模块综述

    Python这门解释性语言也有专门的线程模型,Python虚拟机使用GIL(Global Interpreter Lock,全局解释器锁)来互斥线程对共享资源的访问,但暂时无法利用多处理器的优势。在Python中我们主要是通过thread和 threading...

    Multithreaded Programming in CVI

    解决方法是使用锁机制来保护共享数据,例如使用互斥锁(Mutex)或信号量(Semaphore)来确保只有一个线程可以访问共享数据。 总结 Multithreaded Programming in CVI是一种强大的技术,可以提高程序的性能和响应...

    超级有影响力霸气的Java面试题大全文档

    例如正在写的数据以后可能被另一个线程读到,或者正在读的数据可能已经被另一个线程写过了,那么这些数据就是共享数据,必须进行同步存取。 当应用程序在对象上调用了一个需要花费很长时间来执行的方法,并且不希望...

    java 面试题 总结

    例如正在写的数据以后可能被另一个线程读到,或者正在读的数据可能已经被另一个线程写过了,那么这些数据就是共享数据,必须进行同步存取。 当应用程序在对象上调用了一个需要花费很长时间来执行的方法,并且不希望...

    OS 操作系统 进程 线程 文件 设备 C# 多用户 登陆 课程设计 报告 算法 FCFS

    实际设备,所以无法知道设备何时工作完成,所以假定一个数,这个数随着系统时间 增加而递减,减到0时,认为是设备工作完成); end. 表示文件结束,同时将结果写入文件out,其中包括文件路径名和i的值。 用户...

    数据库学习基础之名词解释

     (2)强大的数据处理功能,在一个工作组级别的网络环境中,使用Access开发的多用户数据库管理系统具有传统的XBASE(DBASE、FoxBASE的统称)数据库系统所无法实现的客户服务器(Cient/Server)结构和相应的数据库安全...

    Java常见面试问题整理.docx

    每一个方法从调用直至执行完成的过程,就对应着一个栈帧在虚拟机栈中入栈到出栈的过程。 异常:线程请求的栈深度大于JVM所允许的深度:StackOverflowError 若JVM允许动态扩展,若无法申请到足够内存:OOM 3.本地...

    超爽的自学课件(java)

    1) 第1章:对象入门 这一章是对面向对象的程序设计(OOP)的一个综述,其中包括对“什么是对象”之类的基本问题的回答,并讲述了接口与实现、抽象与封装、消息与函数、继承与合成以及非常重要的多形性的概念。...

    python解释器spython使用及原理解析

    类、模块包括丰富的库和方便好用的字符串操作,可以说python用来实现功能会优雅很多,而lua最大的优势就是小巧高效,另外lua的lua_state是可以有多个实例的,这样就可以多线程使用lua(一个线程单独一个lua_...

    net学习笔记及其他代码应用

    1. 简述 private、 protected、 public、 internal 修饰符的访问权限。 答 . private : 私有成员, 在类的内部才可以访问。...47.当一个线程进入一个对象的一个synchronized方法后,其它线程是否可...

    如何在Python中编写并发程序

    GIL 在Python中,由于历史原因...据说Python官方曾经实现了一个去除GIL的Python解释器,但是其效果还不如有GIL的解释器,遂放弃.后来Python官方推出了”利用多进程替代多线程”的方案,在Python3中也有concurrent.future

    c#学习笔记.txt

    委托是一个数据结构,该数据结构引用一个静态方法,或引用一个对象实例和该对象的实例方法。在 C 或 C 中与委托最接近的是函数指针,但函数指针只能引用静态函数,而委托可以同时引用静态方法和实例方法。在后一种...

    x-scan-v3.3-cn

    造成这个问题的原因可能有两种:第一种可能性是您的扫描器版本比较低,扫描器本身存在“千年虫”问题,对于返回的信息扫描器在判断的时候,会错误的以为时间信息2000年x月x日中的200是“文件存在”标志,这样就会...

    andriod精华学习教程

    Android应用程序通常是运行在一个单独的线程(例如,main)里。这意味着你 的应用程序所做的事情如果在主线程里占用了太长的时间的话,就会引发ANR对 话框,因为你的应用程序并没有给自己机会来处理输入事件或者...

    java面试题

    15. 当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法? 11 16. abstract class和interface有什么区别? 12 17. abstract的method是否可同时是static,是否可同时是native,是否可...

    VB基于线程,不用Form创建窗体演示实例

    内容索引:VB源码,系统相关,多线程 说明一下,本程序是基于VB多线程的,但是由于...不过在IDE中由于是解释执行,是可以正常运行的,本例子意在传播一种思想,让大家明白VB也可以实现像C++,Delphi那样完全基于类的方式。

    day020-继承加强和设计模式代码和笔记.rar

    先在类中创建一个对象 (联想到封装) =&gt; 提供一个公共的 getInstance给外部返回一个对象 3. 步骤: 1. 私有化构造方法 2. 在类中创建一个对象,并且用private、static、final修饰 ...

    Java核心技术 卷Ⅰ:基础知识 【中文】(第八版)

    然后,通过编译和运行三个典 型的Java程序(一个控制台应用、一个图形应用、一个applet),指导读者使用简易的JDK、可 启用Java的文本编辑器以及一个Java IDE。 第3章开始讨论Java 语言。这一章涉及的基础知识有变量...

Global site tag (gtag.js) - Google Analytics