gpt4 book ai didi

java - 如果响应未在 java 中返回,如何跳过循环

转载 作者:行者123 更新时间:2023-11-29 09:04:38 27 4
gpt4 key购买 nike

我的问题是说我的方法 getAllVendorDetails() 将调用另一个方法 getVendordetailsById(int id),如果那个方法 getVendordetailsById() 不是在指定时间(如 30 秒)内返回响应/答案,我需要转到下一个供应商或跳过执行并向用户显示错误消息。我们如何在 Java 中实现这个结果。我尝试了以下代码,但它不起作用。在进入 getVendordetailsById() 后,它没有返回。

公共(public)课测试{

public static void main(String[] args) {
long currentTime=System.currentTimeMillis();
Date date=new Date(currentTime);
date.setSeconds(date.getSeconds()+30);
long end=date.getTime();
System.out.println("Time="+(end-currentTime));

List<Integer> vendorId= new ArrayList<Integer>();
for (int i = 1; i <= 100000; i++) {
vendorId.add(i);
}
boolean isSuccess=false;
boolean flag=true;

while(end>System.currentTimeMillis()){

if(flag){
flag=false;
for (int i = 0; i < vendorId.size() && end>System.currentTimeMillis() ; i++) {
getVendordetailsById(vendorId.get(i));
isSuccess=true;
}
}
System.out.println("bye");
}

if(isSuccess){
System.out.println("Success");
}else{
System.out.println("Errorr");
}



System.out.println("Current time="+System.currentTimeMillis());
}

private static void getVendordetailsById(Integer id) {
System.out.println("vendor number="+id);
int a=0;
for (int i = 1; i <= 1000; i++) {
a=a+i;
}

System.out.println("Current value of a="+a);
}

最佳答案

您可以使用 java.util.concurrent.Future 来解决您的问题。

首先你需要使用java.util.concurrent.Executors创建一个executor来提交你以后的作业

比如

   //suggest that use it out of the loop
//or in the static field
java.util.concurrent.ExecutorService es = java.util.concurrent.Executors.newFixedThreadPool(1);
//...in the loop
Future<Object> future = es.submit(new Callable<Object>{
public Object call(){
getVendordetailsById
}
});
try{
Object result = future.get(30, TimeUnit.SECONDS);
}cache(TimeoutException te){
break;
}cache(Exception te){
//other exception handler
}

关于java - 如果响应未在 java 中返回,如何跳过循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15680658/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com