如果java中的变量发生变化,如何退出函数? (重启服务器)

时间:2013-11-19 22:05:20

标签: java client-server

使用Java,我正在寻找一种方法来在一个变量发生变化时退出一个函数。想法?

这样的事情:

public class MyServer{

    private int port = 6789;


    public static void main(String args[]){
         startServer(port);    // My server is listenning on port 6789 first
    }

    public void handlePortChange(){
         // if 'port' changes, restart server
    }

    public void setPort(int p) { port = p; }
}


public Class MyServerUI{

    JTextField textField;
    MyServer server;

    // Constructor...
    MyServerUI(MyServer s){
         server = s;
    }

    // Method that
    public void openUI(){

         // My window
         JFrame  f  = new JFrame("My Server");
         f.setVisible(true);

         // a JtextField
         t = new JTextField("New port");
         f.add(t);

         // a button
         JButton b = new JButton("Change port");
         b.addActionListener(new ActionListener() {
              public void actionPerformed(ActionEvent e){
                   // Changing the port
                   server.setPort(Integer.parseInt(t.getText()));
                   // method that restart server if port changes
                   server.handlePortChange();   
              }
         });
         f.add(b);
    }

}

1 个答案:

答案 0 :(得分:1)

在UI类中,如果端口已更改,则启动新服务器。在处理完所有请求后,让旧服务器死掉。

public void doPortChange() {
    MyServer oldServer = this.server;
    this.server = startServer(newPort);
    oldServer.exitGracefully();
}

这样您的旧服务器将一直服务直到它死亡。编写exitGracefully()作为练习留给用户: - )