1.现在我有一个线程,实时的获取数据
2.根据这个线程获取的数据,进行IF判断,然后需要系统级别的等待动作。这里考虑线程池,
一个update线程更新的时候,达到等待条件后,他继续更新,然后他在那个等待成功后面派生一个新线程。但是线程池的数量无法估计,因为根据接的设备多少,获取数据的多少也是无法估计的,
请问类似的有没有其他解决方案,非常感谢。如果有哪里没说详细,请指出,我会尽快回复。非常感谢!!!!大家!!

解决方案 »

  1.   

    Executors类里创建的线程池足够你用了更灵活的有ThreadPoolExecutor
      

  2.   

    看楼主的描叙,个人理解是这样的:
    一个实时获取数据的线程在不断的读取数据;
    一个update线程定时的更新数据;
    实时获取数据的线程根据判断条件产生新任务(等待动作应该是等待线程池的处理);
    update线程更新完后产生新任务(就是你说的派生给一个新线程);如果这样,你可以创建一个固定大小的线程池,把 实时获取数据的线程根据判断条件产生的新任务 提交给线程池中的线程去处理,然后把处理后的结果保存再批量提交给update线程去更新,update线程每更新一个数据后,把处理后的结果给一个新线程去处理(也许就是响应客户);上面用MQ(消息队列)也是很好的办法:
    你可以创建两个队列,一个提供给实时获取数据的线程,把数据给队列的发送端(生产者)产生消息(就是它获取的数据后发送消息),这个队列的接收端(消费者)读取消息产生新任务提交给线程池去处理;然后把线程池处理后的结果给队列(另一个队列了)的发送端(生产者)发送到另一个队列,这个队列的接收端(消费者)读取消息产生任务保存在某个聚集或其它地方,等待update线程调度执行,update线程把处理后的结果给一个新线程去处理(也许就是响应客户);最后是楼主动手实施;
      

  3.   

    java.util.concurrent.Executors
    java.util.concurrent.ThreadPoolExecutor以上两个类的API看一下,非常详细,非常满足你的要求