通过现有代码实现线程
我不是一个彻底的JAVA专业人士,但有编程经验,但没有任何线程。我有一个应用程序代码,目前执行以下操作。从DB 通过现有代码实现线程
- 进行连接成一个集合(每个记录有一个“动作码” 1-5除了其他事情
- 每个记录由一个拿起一个基于每个从一个类EVENTHANDLER.class中调用某个特定方法的行为代码(每个行为代码各一个)
- 这些单独的方法还可以在EVENTHANDLER.class和其他一些类中使用/共享某些其他类,用于某些常见功能,这些方法有
- 最后,db_sequence更新为 个
- 处理,从而完成
所有记录现在,我有一个要求,这是有点含糊的权利,但它希望引进线程成以上,主要用于提高性能。除了优先处理某些记录的某些特定操作代码的优先级。对于实施例 - 用行动代码的记录-2应高度prority超过1,然后3,然后4
我的问题是如何去先用这种方法来实现这一点。其次这是要在JAVA 1.6中完成的,所以我应该使用哪些类。此外,任何代码方向(示例代码)或基于上述功能流程都将非常有帮助。
一个很直接的问题是 - 上述操作码(1-5)我应该有五个线程全部同时运行,或者我应该有一个线程每个记录(可以有几百个),无论动作码的?
由于已经
,如果我是你,还是谁问你这样做的人我会担心。
你有一个数字,以示对现有应用程序的性能是什么?如果是,他们是否超过了预期绩效的目标?直到我拥有这两者,我才会对线程做出判断。
线程是一个高级的话题,很容易得到错误,即使你经历。
这听起来好像数据库部分可以是一个单独的线程。这些处理程序可能是长期运行的,所以我会使用Executor和Java并发包中的新构造来运行这些处理程序。在任何情况下,你都应该使用原始线程来做到这一点。
这听起来好像你需要帮助。我会找到比你咨询的人更了解Java的人。
人们不应该像在独立任务或工作中那样在线程中考虑太多。在这种情况下,似乎有可以提交给从PriorityBlockingQueue构造的ThreadPoolExecutor的作业。该队列应该使用操作代码进行排序。做自己的测试来决定线程池的最佳并发水平。 但是,如果这个系统没有被设计用于多线程,那么处理类(EVENTHANDLER&friends)很可能不是线程安全的。 –
伟大的观点,拉尔夫·H。如果它是答案,我会投票赞成。 – duffymo
也许你会,但如果它不够完整或有其他原因,它会有相同的机会获得downvote。所以,如果我没有足够的时间,我只是评论。其实,关于线程/任务的建议在这里引起了很大的关注,但它并没有回答这个问题。 –
是否有可能同时运行两个任务?我的意思是,在开始“task2”之前,你需要完成“task1”吗? 另一个问题:这些任务很长?我们在谈论几秒钟,几分钟或什么? – TheBronx