我有一个工作项目,我有多个线程调用我创建的实用程序函数,该函数将发布表单发送到我们拥有的内部 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 类中有这个运行方法:
@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 编程或线程以来已经有一段时间了。这是一件非常简单的事情,我知道我忘记了。
此外,我已经更改了很多代码,并且只显示了关键部分是工作项目的一部分,我不想冒险。