[英]NullPointerException, at thread
我正在編碼Java應用程序,該程序解碼將從文本文件讀取的TCAP幀,然后將解碼后的數據插入數據庫(Oracle)中! 因此,一開始,解碼和集成是完美執行的,但是當解碼和插入的數據達到一定數量時,它將開始在假定要插入數據庫的線程中觸發此錯誤:
" java.lang.OutOfMemoryError: unable to create new native thread "
" Exception in thread "Thread-465" java.lang.NullPointerException "
代碼提取:
public void run(){
Conn_BD connexion=new Conn_BD("thin:@localhost:1521:XE", "SYSTEM", "SYSTEM");
java.sql.Connection cn=connexion.connect();
try {
Statement instruction = cn.createStatement();
instruction.executeUpdate("update tcapBegin set "+
trame+"='"+trame_val+"' where "+message+" like '"+trameId+"'");
cn.close();
} catch(SQLException e) {
System.out.print(e);
}
}
有誰有解決這個問題的想法?
您在trhead開頭有此聲明
Conn_BD connexion=new Conn_BD("thin:@localhost:1521:XE", "SYSTEM", "SYSTEM");
好像您每次創建新線程時都在創建新連接。 創建連接然后執行語句需要花費時間,因此在關閉第一個連接時,已經創建了許多其他連接,您無法再創建了。
如果您使用一個靜態引用進行連接,則將是一個更好的選擇。
private static Conn_BD connexion=new Conn_BD("thin:@localhost:1521:XE", "SYSTEM", "SYSTEM");
private static java.sql.Connection cn=connexion.connect();
public void run(){
Statement instruction = cn.createStatement();
//code here
instruction.close();
}
一旦所有線程執行完畢,關閉連接。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.