小弟在公司接了一個前輩寫的code(前輩已經離職)
功能是利用Jsmpp的libery實做發送SMS功能
因為對Thread算是半懂,沒有真正去深究過
就這樣接著之前的寫法用下去
最近發生一些問題,不過因為沒有找到真的可以確定的答案,上來求助各位高手
問題:在程式執行的過程,發現這個程式會建立多個session連線
程式內容:
宣告全域變數
SMPPSession smppSession = new SMPPSession();
private ArrayList<msgStatus> qryMsg= new ArrayList<msgStatus>();
使用 ExecutorService
對每個簡訊建立發送的thread,放至pool中,去發送並且將資料寫入List
在內部寫 private class extends Thread 去追蹤發出去的簡訊之後的狀態
整個結構是
public class A {
SMPPSession smppSession = new SMPPSession();
private ArrayList<msgStatus> qryMsg= new ArrayList<msgStatus>();
public static void main(){
Thread t = new
t.start
for(......){
execService.execute(newSendTask(tmm));
}
}
public class B extends Thread{
查詢在qryMsg中簡訊的狀態
}
private Runnable newSendTask(final msgStatus msg) {
return new Runnable() {.....發送簡訊並且將資料放至qryMsg中};
}
}
所有的過程都使用同樣smppsession
不清楚為什麼會有多個連線的問題
有在猜是不是在new SendTask的時候,會自己獨立一個連線的session?
這樣的話是不是把smppsession設為 static靜態變數就可以避免多個session連線的問題?
麻煩各位版友解惑
非常感謝