正 文

构建更有效的WEB应用


www.7dspace.com  更新日期:2005-11-10 6:38:35  七度空间


  Job类显示如下:

//Job.java
package train;
import java.io.*;
public class Job {
  String mName;
  String mDescr;
  int mViews;
  String mID;
  PrintWriter mOut;
  Thread mJobThread;
  boolean mHasFailed = false;
  //Sorry, no getters and setters to save space
 
  public Job(String id) {
    mID = id;
  }

  public void Marshall(){ // displays html page
   mOut.println("<html><body>");
   if(mHasFailed){
     mOut.println("System error");
   }else{
   mOut.println("<p>ID: "+mID+"</p>");
   mOut.println("<p>Name: "+mName+"</p>");
   mOut.println("<p>Description: "+mDescr+"</p>");
   mOut.println("<p>Views: "+mViews+"</p>");
   }
   mOut.println("</body></html>");
  }
}

  Job是一个纯粹的用户请求的代表。

  marshall()方法在浏览器中显示信息。mJobThread成员是一个由WEB应用服务器创建执行请求的线程。

  Dispatcher类是最重要的但也很简单:

//Dispatcher.java
package train;

import java.util.*;
public class Dispatcher
    implements Runnable {
  private List mCurrentJobBatch = new ArrayList(); //Batch container
  private int mJobBatchMaxSize = 5; //Maximum number of the jobs in the batch
  private int mIntervalTime = 50; //Maximum time to wait before batch execution

  public synchronized void AddJob(Job job) {
    mCurrentJobBatch.add(job);
    if (mCurrentJobBatch.size() == mJobBatchMaxSize) {
      ProcessJobBatch(); //If batch is full, execute
    }
  }

  private synchronized void ProcessJobBatch() {
    if (mCurrentJobBatch.size() == 0) { return; }
    Worker worker = new Worker(mCurrentJobBatch);
    Thread ht = new Thread(worker);
    ht.start();
    mCurrentJobBatch = new ArrayList();
  }

  public void run() {
    try {
      while (true) {
        Thread.sleep(mIntervalTime);
        ProcessJobBatch(); // Each  mIntervalTime milliseconds execute batch
      }
    }
    catch (InterruptedException ex) { }
  }
}

8页,页码:[1] [2] [3] [4] [5] [6] [7] [8] 

上一篇:如何在Eclipse RCP中使用第三方包
下一篇:办公室的故事:无线打印
作者:Edward Salatovka  来源:Matrix ( 责任编辑:7dspace )
收藏此页】【打印】【关闭
站 内 搜 索
 

热 点 导 读
特 别 推 荐