MarketMakerClient.java
上传用户:dinglihq
上传日期:2013-02-04
资源大小:99958k
文件大小:2k
源码类别:

Java编程

开发平台:

Java

  1. package bible.rmi.example4;
  2. import weblogic.rmi.*;
  3. import java.util.*;
  4. import javax.naming.*;
  5. /**
  6.  * MarketMakerClient periodically sets prices in the PriceServer.
  7.  */
  8. public class MarketMakerClient extends TimerTask implements Runnable {
  9.   /** rand           */
  10.   private Random rand = new Random();
  11.   /** securities           */
  12.   private String[] securities = null;
  13.   /**
  14.    * Get a reference to the PriceServer, get a list of securites, and display prices.
  15.    */
  16.   public void run() {
  17.     System.out.println("MarketMakerClient setting prices.");
  18.     System.out.println(" Time: " + new Date(System.currentTimeMillis()));
  19.     try {
  20.       InitialContext ctx    = Environment.getInitialContext();
  21.       PriceServer    server =
  22.         (PriceServer) ctx.lookup(PriceServer.PRICESERVERNAME);
  23.       securities = server.getSecurities();
  24.       for (int i = 0; i < securities.length; i++) {
  25.         boolean increase = rand.nextBoolean();
  26.         Float   amount   = new Float(0.25 * rand.nextInt(2));
  27.         if (increase) {
  28.           server.setPrice(securities [i],
  29.                           server.getPrice(securities [i])
  30.                           + amount.floatValue());
  31.         } else {
  32.           server.setPrice(securities [i],
  33.                           server.getPrice(securities [i])
  34.                           - amount.floatValue());
  35.         }
  36.       }
  37.     } catch (Exception e) {
  38.       e.printStackTrace();
  39.     }
  40.   }
  41.   /**
  42.    * Declare a new client and schedule its functionality on a timer.
  43.    * @param args
  44.    */
  45.   public static void main(String[] args) {
  46.     Timer             t      = new Timer();
  47.     MarketMakerClient client = new MarketMakerClient();
  48.     // Starting in 5 secs, re-do pricing every 5 seconds.
  49.     t.schedule(client, 5000, 5000);
  50.   }
  51. }