Java線程檢測(cè)基本的問題猜想
Java線程檢測(cè)需要我們學(xué)習(xí)相當(dāng)多的知識(shí)。其實(shí)話說回來,在不斷的學(xué)習(xí)中我們就能發(fā)現(xiàn)在很多的時(shí)候還是有不少的技巧。下面我們就詳細(xì)的看看如何才能更好的學(xué)習(xí)相關(guān)知識(shí)。#t#
天修改程序的時(shí)候,在原有的數(shù)據(jù)庫壓力測(cè)試軟件上增加了一個(gè)統(tǒng)一的入口,結(jié)果在測(cè)試的時(shí)候,發(fā)現(xiàn)測(cè)試壓力這部分功能正常完成了,但是輸出Java線程檢測(cè)結(jié)果這塊出問題了,軟件原來設(shè)計(jì)的時(shí)候把測(cè)試數(shù)據(jù)的統(tǒng)計(jì)信息保存在一張表里面,通過PL/SQL查詢統(tǒng)計(jì)信息保存的表,發(fā)現(xiàn)統(tǒng)計(jì)信息都正常保存了,但是調(diào)用輸出結(jié)果的模塊的時(shí)候總是查詢出空記錄,換成其他表名查詢就沒有問題 ,非常郁悶
剛開始猜測(cè):
1. 表名是關(guān)鍵字
2. 表不在當(dāng)前用戶下
接著通過實(shí)驗(yàn)一一排除了這兩個(gè)可能性。
最后無意中把之前多Java線程檢測(cè)數(shù)據(jù)庫壓力的程序入口注釋掉后,JDBC程序正常連接數(shù)據(jù)庫查詢統(tǒng)計(jì)信息了;這時(shí)候才恍然大悟,在多線程測(cè)試數(shù)據(jù)庫壓力的程序結(jié)尾忘記檢測(cè)一下線程是否都完成了,都完成了才能順序執(zhí)行輸出統(tǒng)計(jì)信息這個(gè)程序。如果沒有檢測(cè)線程是否都完成了,那么java很可能在啟動(dòng)多線程測(cè)試壓力的同時(shí),也已經(jīng)啟動(dòng)了輸出統(tǒng)計(jì)信息的程序,那么在測(cè)試還沒有完成的情況下統(tǒng)計(jì)信息還沒有收集完成(還沒進(jìn)數(shù)據(jù)庫呢)當(dāng)然查詢的結(jié)果永遠(yuǎn)都是空。
記錄一下:Java線程檢測(cè)是否都已經(jīng)完成的語句:
thread_instance.join();
最后總結(jié)如下:出問題的地方不一定就是表現(xiàn)出錯(cuò)誤的地方,一定要細(xì)心。