📄 tickerserverimpl.java
字号:
package com.darwinsys.callback;import com.darwinsys.client.*;import java.rmi.*;import java.rmi.server.*;import java.util.*;/** This is the main class of the server */public class TickerServerImpl extends UnicastRemoteObject implements TickerServer, Runnable{ ArrayList list = new ArrayList(); /** Construct the object that implements the remote server. * Called from main, after it has the SecurityManager in place. */ public TickerServerImpl() throws RemoteException { super(); // sets up networking } /** Start background thread to track stocks :-) and alert users. */ public void start() { new Thread(this).start(); } /** The remote method that "does all the work". This won't get * called until the client starts up. */ public void connect(Client da) throws RemoteException { System.out.println("Adding client " + da); list.add(da); } boolean done = false; Random rand = new Random(); public void run() { while (!done) { try { Thread.sleep(10 * 1000); System.out.println("Tick"); } catch (InterruptedException unexpected) { System.out.println("WAHHH!"); done = true; } Iterator it = list.iterator(); while (it.hasNext()){ String mesg = ("Your stock price went " + (rand.nextFloat() > 0.5 ? "up" : "down") + "!"); // Send the alert to the given user. // If this fails, remove them from the list try { ((Client)it.next()).alert(mesg); } catch (RemoteException re) { System.out.println( "Exception alerting client, removing it."); System.out.println(re); it.remove(); } } } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -