Java线程检测需要我们学习相当多的知识。其实话说回来,在不断的学习中我们就能发现在很多的时候还是有不少的技巧。下面我们就详细的看看如何才能更好的学习相关知识。#t#
天修改程序的时候,在原有的数据库压力测试软件上增加了一个统一的入口,结果在测试的时候,发现测试压力这部分功能正常完成了,但是输出Java线程检测结果这块出问题了,软件原来设计的时候把测试数据的统计信息保存在一张表里面,通过PL/SQL查询统计信息保存的表,发现统计信息都正常保存了,但是调用输出结果的模块的时候总是查询出空记录,换成其他表名查询就没有问题 ,非常郁闷
刚开始猜测:
1. 表名是关键字
2. 表不在当前用户下
接着通过实验一一排除了这两个可能性。
最后无意中把之前多Java线程检测数据库压力的程序入口注释掉后,JDBC程序正常连接数据库查询统计信息了;这时候才恍然大悟,在多线程测试数据库压力的程序结尾忘记检测一下线程是否都完成了,都完成了才能顺序执行输出统计信息这个程序。如果没有检测线程是否都完成了,那么java很可能在启动多线程测试压力的同时,也已经启动了输出统计信息的程序,那么在测试还没有完成的情况下统计信息还没有收集完成(还没进数据库呢)当然查询的结果永远都是空。
记录一下:Java线程检测是否都已经完成的语句:
thread_instance.join();
最后总结如下:出问题的地方不一定就是表现出错误的地方,一定要细心。