使用实用程序函数post调用实现Java Runnable

使用实用程序函数post调用实现Java Runnable,java,multithreading,jenkins,javax,javax.ws.rs,Java,Multithreading,Jenkins,Javax,Javax.ws.rs,我有一个工作项目,在这个项目中,我让多个线程调用我创建的实用程序函数,该函数将post表单发送到我们拥有的内部API 我在这里使用callAPI方法,该方法在实用程序类中,是公共的、最终的和静态的: public static int callAPI(String url, TaskListener listener, String operation, String id, String password, String sUser){ Client client = Clien

我有一个工作项目,在这个项目中,我让多个线程调用我创建的实用程序函数,该函数将post表单发送到我们拥有的内部API

我在这里使用
callAPI
方法,该方法在实用程序类中,是公共的、最终的和静态的:

public static  int callAPI(String url, TaskListener listener, String operation, String id, String password, String sUser){
      Client client = ClientBuilder.newClient();



      Form form = new Form();
      form.param("case", id);
      form.param("user", sUser);
      form.param("password", password);
      listener.getLogger().println("*******************************************************");
      listener.getLogger().println("Sending API Service Request");

      Response response = client.target(url)
              .path(operation)
              .request(MediaType.APPLICATION_JSON)
              .post(Entity.entity(form, MediaType.APPLICATION_FORM_URLENCODED_TYPE));


  }
然后在我的Runnable类中有这个run方法:

  @Override
  public void run(){

       listener.getLogger().println("Thread Started.\n");

       int runId = Utility.callAPI(wUrl, listener, operation, password, sUser);

       listener.getLogger().println("call completed");
  }
那么Jenkins控制台输出中实际打印的内容是:

*******************************************************
Sending API Service Request
Thread Started.
这意味着我知道正在调用我的
run()
方法,因此我的线程正在启动。我知道它可以在实用程序中看到我的
runAPI
方法

现在我能收集的是这条线:

 Response response = client.target(url)
                  .path(operation)
                  .request(MediaType.APPLICATION_JSON)
                  .post(Entity.entity(form, MediaType.APPLICATION_FORM_URLENCODED_TYPE));
发送一个请求,线程在完成
run()
方法的其余部分之前从那里退出

我试过:

  • 放置线程睡眠循环
  • 将呼叫放入while循环
我已经有一段时间没有做过Java编程或线程了。这是一件非常简单的事情,我知道我已经忘记了

我也修改了很多代码,只展示了关键部分,因为这是一个工作项目的一部分,我不想冒险


您是否尝试运行
thread.join()
,等待线程完成?(运行
thread.start()
)后,它可能会引发异常。尝试在那里放置一个Try-catch。@a.Pahlavan我实际上使用的是Jenkins Executor服务,而不是以那种方式启动线程。我可以查看它是否有一些相关信息。@RobinGreen响应行中是否有异常?我将在那里尝试捕获我知道线程正在运行def,但是如果需要,我还可以找出如何使用executor服务捕获异常。您是否尝试调试此代码?