Java事件:慢速网络

Java事件:慢速网络,java,events,networking,performance,Java,Events,Networking,Performance,我正在尝试做一些异步编程,但是我的Java技能有点生疏了 这是我的密码: private static String uname="xxx"; private static String pword="xxx"; private static int productId=82; private static String sessionToken=""; public static void main(String[] args) {

我正在尝试做一些异步编程,但是我的Java技能有点生疏了

这是我的密码:

   private static String uname="xxx";
   private static String pword="xxx";
   private static int productId=82; 
   private static String sessionToken="";

    public static void main(String[] args)
        {
            BFGlobalService_Service service=new BFGlobalService_Service();
            BFGlobalService betfair=service.getBFGlobalService();

            System.out.println("hello");

            LoginReq loginReq=new LoginReq();
            loginReq.setUsername(uname);
            loginReq.setPassword(pword);
            loginReq.setProductId(productId);
            loginReq.setLocationId(0);
            loginReq.setVendorSoftwareId(0);

            LoginResp loginResp=new LoginResp();
            loginResp=betfair.login(loginReq);   //this line is very slow ;(
            sessionToken=loginResp.getHeader().getSessionToken();

            ...
        }
loginResp=betfair.loginloginReq这行需要时间我有一个非常慢的3G网络,它会阻塞整个程序流程。此操作完成后,我是否可以引发事件

i、 e.我想要这种事件处理程序伪代码:

private void handleNewLoginResp(...)
{
   System.out.println("login response received");
   sessionToken=loginResp.getHeader().getSessionToken();
}

我希望这将是足够直接的!我尝试过谷歌搜索,但我能找到的只是关于GUI的文章,等等。在这里输入代码

如果没有可用的非阻塞版本的登录函数,你应该在单独的线程中运行它,并在完成后触发事件

注意,使用多个线程意味着必须考虑并发问题。 您需要查找诸如线程安全、java同步关键字和侦听器之类的内容

监听器或事件监听器不是必需的,但它们是您需要的设计概念,您需要制作一个精心设计的解决方案。

请继续阅读。假设您有一个UI,您会想要使用它,或者任何与您的环境功能相当的东西

更新:

唯一可能让您绊倒的是,侦听器将在后台线程的上下文中调用,而不是在主线程的上下文中调用。因此,您需要使用同步块来确保在后台线程上创建的对象从线程的缓存刷新到公共内存


这与为GUI编写代码没有什么不同。这就是为什么搜索时找不到任何东西。

嗨,谢谢你。好啊我将详细阅读Java并发性。我有一个好主意,只是我已经好几年没有用Java做了。不,我没有使用UI。此应用程序将在我的服务器上运行。