【问题标题】:Waiting for object to bind in CORBA Naming Service等待对象在 CORBA 命名服务中绑定
【发布时间】:2023-03-26 23:24:01
【问题描述】:

我想等待服务器将自己绑定到 CORBA 命名服务。 首先我尝试使用以下代码,它正在轮询命名服务

Object expectedObj = null;
do
{
   try { expectedObj = ncRef.resolve_str("expectedToBeInNameService"); } 
   catch (NotFound e) {}
   Thread.sleep(2000);
} while(expectedObj == null;

我最大的问题是这个阻塞。等待它非阻塞的最简单方法是什么?

【问题讨论】:

  • 在等待那个对象时你想做什么?

标签: java corba


【解决方案1】:

您可以在另一个线程中等待并使用回调来通知“原始”线程或对象对命名服务的请求已解决。

class WaitThread extends Thread {
    CallBackObj callback;

    public WaitThread(CallBackObj callback) {
      this.text = callback;
      // assume CORBA stuff initiated here
    }

    public void run() {
      Object expectedObj = null;
      do
      {
         try { expectedObj = ncRef.resolve_str("expectedToBeInNameService"); } 
         catch (NotFound e) {}
         Thread.sleep(2000);
      } while(expectedObj == null;
      callback.notifyMethodExample();
    }
  }

调用者必须实现接口CallBackObj,并会创建这个线程

WaitThread wt = new WaitThread(this);
wt.start();


interface CallBackObj {
 void notifyMethodExample();

}

【讨论】:

  • 能给个代码示例吗?我对java线程不熟悉。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-18
  • 1970-01-01
  • 2012-04-04
相关资源
最近更新 更多