java 基礎類型對應的Object在+->

今天,在開啓定時任務線程時,任務在執行1遍之後不再執行。一直卡主,但無任務異常報出(不知是否是日誌屏蔽了這類錯誤)。

錯誤類似如下:

private Long a;

pirvate int timeout =50000;

private ChannelSftp sftp = new ChannelSftp ();

if (null !=sftp && System.currentTimeMillis() - a < timeout ) {

   //XXXX業務代碼

}

其中 使用到了System.currentTimeMillis() 減去一個Long 型  < int 類型。

在加減運算之中,一般會自動的類型轉換,而且初始long 應該被賦予了初值0.

但是注意到了。。其實是 long - Long < int. 

正常情況下不會有什麼問題,但是Long類型初始化並不像int 與 long 一樣被系統賦予初值0.導致Long類型爲空,線程僵死,後續定時線程上來後依然卡死在這樣,從外來看像是程序假死了。


在使用Integer 與Long 等基礎類型對應object,如果需默認值,需要初始化賦值,避免運算時假死。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章