JAVA中的自定义类C事件?

JAVA中的自定义类C事件?,java,c#,web-services,event-handling,Java,C#,Web Services,Event Handling,我有一个简单的JavaWeb客户端,它连接到本地主机上运行的HTTP绑定上的WSDL服务。我在WSDL服务中编写了一个方法,它向客户端返回一个双变量。我将在以后的课程中使用这个变量。我使用ScheduledExceutorService线程以10ms的速率定期扫描WSDL服务中的价格 有时我从服务中获取数据,有时我得不到。这不是问题,事情就是这样发生的。我想要的是,现在需要基于事件。也就是说,只有当我从WSDL服务中获取数据时,我才需要捕获它。我的executor线程持续扫描wsdl服务。如何通

我有一个简单的JavaWeb客户端,它连接到本地主机上运行的HTTP绑定上的WSDL服务。我在WSDL服务中编写了一个方法,它向客户端返回一个双变量。我将在以后的课程中使用这个变量。我使用ScheduledExceutorService线程以10ms的速率定期扫描WSDL服务中的价格

有时我从服务中获取数据,有时我得不到。这不是问题,事情就是这样发生的。我想要的是,现在需要基于事件。也就是说,只有当我从WSDL服务中获取数据时,我才需要捕获它。我的executor线程持续扫描wsdl服务。如何通过编写基于事件的程序来消除这种情况。我已经看到了下面的链接,但是我对我的情况有点困惑

这是我的代码:

import com.microsoft.schemas._2003._10.serialization.arrays.ArrayOfstring;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.TimeUnit;

public class GetLTPData implements Runnable{

public static ArrayOfstring al=new ArrayOfstring();
public static List<String> list = new ArrayList<String>();
String symbol ="GC";
String exg = "NDF";
String expiry = "201706";
String security = "FUT";

  public static double getLTPdata(String symbol,String exchange,String expiry,String securitytp) throws InterruptedException {
     try{
      al  = javaItem(symbol,exchange,expiry,securitytp);
     }
     catch( Exception e ){
     }
      list = al.getString();

      if(list.size()== 0)
       throw new InterruptedException();
      else 
          return Double.parseDouble(list.get(0));

  }
   @Override
  public void run() {
      try{
      getLTPdata(symbol,exg,expiry,security);
      }
      catch(InterruptedException ie){
          System.err.println(ie.getMessage());
      }
  }
import com.microsoft.schemas._2003._10.serialization.arrays.ArrayOfstring;
导入java.util.ArrayList;
导入java.util.List;
导入java.util.concurrent.Executors;
导入java.util.concurrent.ScheduledExecutorService;
导入java.util.concurrent.ScheduledFuture;
导入java.util.concurrent.TimeUnit;
公共类GetLTPData实现可运行{
public static ArrayOfstring al=new ArrayOfstring();
public static List=new ArrayList();
String symbol=“GC”;
字符串exg=“NDF”;
字符串到期日=“201706”;
字符串security=“FUT”;
公共静态双getLTPdata(字符串符号、字符串交换、字符串过期、字符串安全性TP)引发InterruptedException{
试一试{
al=javaItem(符号、交换、到期、安全性TP);
}
捕获(例外e){
}
list=al.getString();
if(list.size()==0)
抛出新的InterruptedException();
其他的
返回Double.parseDouble(list.get(0));
}
@凌驾
公开募捐{
试一试{
getLTPdata(符号、exg、到期日、安全性);
}
捕获(中断异常ie){
System.err.println(即getMessage());
}
}
//下面是我正在呼叫的C#服务 私有静态ArrayOfstring javaItem(java.lang.String符号、java.lang.String交换、java.lang.String过期日期、java.lang.String安全类型){

org.tempuri.JavaBroadCastEx service=new org.tempuri.JavaBroadCastEx();
org.tempuri.IJavaBroadCast port=service.getBasicHttpBindingIJavaBroadCast();
返回端口.javaItem(symbol、exchange、expiryDate、securityType);
}
公共静态void main(字符串[]args){
GetLTPData数据=新的GetLTPData();
ScheduledExecutorService executor1=执行者。newScheduledThreadPool(2);
//每100毫秒创建一次重复任务
ScheduledFuture结果=Executor 1.scheduleAtFixedRate(数据,10,10,时间单位为毫秒);
}
}
        org.tempuri.JavaBroadCastEx service = new org.tempuri.JavaBroadCastEx();
        org.tempuri.IJavaBroadCast port = service.getBasicHttpBindingIJavaBroadCast();
        return port.javaItem(symbol, exchange, expiryDate, securityType);
    }
   public static void main(String[] args){
    GetLTPData data = new GetLTPData();
     ScheduledExecutorService executor1 = Executors.newScheduledThreadPool(2);
            // Create Repetitive task for every 100ms
    ScheduledFuture<?> result = executor1.scheduleAtFixedRate(data, 10, 10, TimeUnit.MILLISECONDS);

    }
}