问题:
    有1000台终端的实时采集数据上传(10秒1条),服务器解析程序负责解析入库,我计划用多线程进行解析并多线程入库,但1000台终端每台的数据需要按接收到的时间顺序录入(因为需要做相应计算),我的想法是每个线程负责300台终端解析入库,根据终端是否在线动态增减线程数量。通过SOCKET接到的终端数据(带有终端ID),每300台一个线程,并且以后对应终端数据接到后按照先前分配的线程放到对应线程队列里,等待解析入库。30分钟没有数据就判断终端掉线,就在线程中去掉该终端ID。问题是:
1、如果先前上线900个,那么就有3个线程,但是随着终端掉线,对应线程需要被停止。怎么做到?怎么做到当每个线程都不足300时,怎么整合呢?有没有必要做整合?
2、我用类把数据队列和线程封装在一起了,当线程终结的时候把对应的终端ID关系去掉。当增加线程时就要增加类实例了,这样需要判断类实例有没有存在了,生命周期问题?在While循环里定义相关类实例,并启动线程,把该类实例保存到Array里,当这个While循环结束,这个类实例还存在吗?
    请大家帮忙,看我哪里的知识有漏洞?给点建议也好啊。

解决方案 »

  1.   

    这几天我也是刚刚学习多线程!你的思路中,意思是多个线程同时操作一个表,同时插入!和一个线程插入!速度上有区别吗?机子是单核的!
       还有我现在做的程序,用的是多线程处理多个表,基本是一对一的情况,但是,一个一个运行我还算正常,但是一旦用for循环运行就出错!我断点了一下,当出错的时候,大概意思是我缓冲的表datatable丢失了!不知道您知道怎么回事不!