Java中的多线程

时间:2010-05-11 10:54:23

标签: java multithreading concurrency

我正在使用核心java和IBM Websphere MQ 6.0。我们有一个独立的模块,比如DBcomponent,它会命中数据库并根据运行时查询获取结果集。查询通过MQ消息传递介质传递给应用程序。我们为队列配置了一个触发器,只要队列中有消息,就会调用DBComponent。 DBComponent使用消息,构造查询并将结果集返回到另一个队列。在这个整个过程中,我们使用log4j来记录日志文件中的语句以进行审计。

使用Apache池将连接池化到数据库。我试图检查是否使用示例程序正确记录日志消息。程序将输入消息放入队列并检查日志文件中的日志。它预计在我尝试检查日志文件中的消息之前完成触发器方法调用,但每次检查日志消息的程序都会先执行,导致我的检查失败。

即使我引入Thread.sleep(time)也不能解决问题。我怎样才能使我的方法执行等待,直到触发操作完成?

任何建议都会有所帮助。

2 个答案:

答案 0 :(得分:1)

我建议你去阅读Java为你提供的并发原语。 http://tutorials.jenkov.com/java-concurrency/index.html似乎涵盖了基础,特别是线程信令章节。

答案 1 :(得分:0)

即使在简单的测试程序中,我也建议不要依赖log4j(或任何日志记录功能)。

按照您的预期运行测试,在您认为合适的情况下将调试/跟踪语句放在日志中(对它很开心,log4j非常快!)然后,当它完成后,自己检查日志。

Writing log parsing will only complicate your goals.

编写测试,查看结果,查看日志。如果您想要自动化测试,请考虑设置功能测试。您可以使用Selenium免费设置测试。 (http://seleniumhq.org/)当有易于配置,易于使用,易于定制的框架时,无需编写自己的功能测试/解析内容! : - )