0

我不是一个彻底的JAVA专业人士,但有编程经验,但没有任何线程。我有一个应用程序代码,目前执行以下操作。从DB 通过现有代码实现线程

  • 拉记录DB

    1. 进行连接成一个集合(每个记录有一个“动作码” 1-5除了其他事情
    2. 每个记录由一个拿起一个基于每个从一个类EVENTHANDLER.class中调用某个特定方法的行为代码(每个行为代码各一个)
    3. 这些单独的方法还可以在EVENTHANDLER.class和其他一些类中使用/共享某些其他类,用于某些常见功能,这些方法有
    4. 最后,db_sequence更新为
    5. 处理,从而完成

    所有记录现在,我有一个要求,这是有点含糊的权利,但它希望引进线程成以上,主要用于提高性能。除了优先处理某些记录的某些特定操作代码的优先级。对于实施例 - 用行动代码的记录-2应高度prority超过1,然后3,然后4

    我的问题是如何去先用这种方法来实现这一点。其次这是要在JAVA 1.6中完成的,所以我应该使用哪些类。此外,任何代码方向(示例代码)或基于上述功能流程都将非常有帮助。

    一个很直接的问题是 - 上述操作码(1-5)我应该有五个线程全部同时运行,或者我应该有一个线程每个记录(可以有几百个),无论动作码的?

    由于已经

  • +3

    是否有可能同时运行两个任务?我的意思是,在开始“task2”之前,你需要完成“task1”吗? 另一个问题:这些任务很长?我们在谈论几秒钟,几分钟或什么? – TheBronx

    回答

    2

    ,如果我是你,还是谁问你这样做的人我会担心。

    你有一个数字,以示对现有应用程序的性能是什么?如果是,他们是否超过了预期绩效的目标?直到我拥有这两者,我才会对线程做出判断。

    线程是一个高级的话题,很容易得到错误,即使你经历。

    这听起来好像数据库部分可以是一个单独的线程。这些处理程序可能是长期运行的,所以我会使用Executor和Java并发包中的新构造来运行这些处理程序。在任何情况下,你都应该使用原始线程来做到这一点。

    这听起来好像你需要帮助。我会找到比你咨询的人更了解Java的人。

    +2

    人们不应该像在独立任务或工作中那样在线程中考虑太多。在这种情况下,似乎有可以提交给从PriorityBlockingQueue构造的ThreadPoolExecutor的作业。该队列应该使用操作代码进行排序。做自己的测试来决定线程池的最佳并发水平。 但是,如果这个系统没有被设计用于多线程,那么处理类(EVENTHANDLER&friends)很可能不是线程安全的。 –

    +0

    伟大的观点,拉尔夫·H。如果它是答案,我会投票赞成。 – duffymo

    +0

    也许你会,但如果它不够完整或有其他原因,它会有相同的机会获得downvote。所以,如果我没有足够的时间,我只是评论。其实,关于线程/任务的建议在这里引起了很大的关注,但它并没有回答这个问题。 –