java http 連結逾時判斷

來源:互聯網
上載者:User

 

 

"聲明一個boolean公開變數,表明當前httpconnection是否得到伺服器回應。

你的連接線程中在串連之前置這個變數為false;

另起一個監視線程,拿到那個HttpConnection的連線物件,並迴圈監視這個boolean公開變數。如果指定時間內(20秒後)你的boolean公開變數還是false,那麼就主動置httpconnection=null。這樣,那邊連接線程就會拋出異常退出來。"

寫了Timer類來實現.(學習國外一個網站上的寫法)

class Timer extends Thread {
  /** 每個多少毫秒檢測一次 */
  protected int m_rate = 100;

  /** 逾時時間長度毫秒計算 */
  private int m_length;

  /** 已經啟動並執行時間 */
  private int m_elapsed;

  /**
   * 建構函式
   * 
   * @param length
   *            Length of time before timeout occurs
   */
  public Timer(int length) {
   // Assign to member variable
   m_length = length;

   // Set time elapsed
   m_elapsed = 0;
  }
  /**
   * 重新計時
   *
   */

  public synchronized void reset() {
   m_elapsed = 0;
   System.out.println("reset timer");
  }
  /**
   * 故意設定為逾時,可以在伺服器有返回,但是錯誤返回的時候直接調用這個,當成逾時處理
   *
   */
  public synchronized void setTimeOut()
  {
   m_elapsed = m_length+1;
  }

  /** 
    */
  public void run() {
   // 迴圈

   System.out.println("timer running");
   for (;;) {
    // Put the timer to sleep
    try {
     Thread.sleep(m_rate);
    } catch (InterruptedException ioe) {
     continue;
    }

    synchronized (this) {
     // Increment time remaining
     m_elapsed += m_rate;

     // Check to see if the time has been exceeded
     if (m_elapsed > m_length && !isConnActive) { //isConnActive 為全域變數
      // Trigger a timeout
      timeout();
      break;
     }
    }

   }
  }

  /**
   * 逾時時候的處理
   *
   */
  public void timeout() {
      httpConnection = null;
      System.out.println("conn time > " + TIME_OUT + " ms");
    }
 }

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.