java 写一个循环(60s左右自动退出循环,返回超时),3s左右查一次redis,看状态是不是密码校验成功或者失败,是这两个状态的话返回交易成功,失败,
时间: 2024-03-12 21:49:25 浏览: 50
好的,以下是一个满足您要求的Java代码示例:
```java
import redis.clients.jedis.Jedis;
public class RedisLoop {
public static void main(String[] args) throws InterruptedException {
// 连接Redis
Jedis jedis = new Jedis("localhost", 6379);
long start_time = System.currentTimeMillis(); // 循环开始时间
long timeout = 60 * 1000; // 超时时间,单位为毫秒
long interval = 3 * 1000; // 每次查询的时间间隔,单位为毫秒
while (true) {
if (System.currentTimeMillis() - start_time > timeout) {
System.out.println("超时");
break;
}
String status = jedis.get("status"); // 查询状态
if ("success".equals(status)) {
System.out.println("交易成功");
break;
} else if ("failed".equals(status)) {
System.out.println("交易失败");
break;
}
// 等待一段时间再继续查询
Thread.sleep(interval);
}
// 关闭连接
jedis.close();
}
}
```
这段代码会在循环开始后,每隔3秒查询一次Redis中的状态,如果状态是`success`或`failed`,则输出相应的结果并退出循环。如果循环已经运行了超过60秒还没有得到结果,则输出“超时”并退出循环。
需要注意的是,这里使用了`jedis.get()`方法来查询Redis中的值,该方法返回的是一个字符串类型的结果,需要使用`.equals()`方法来比较字符串的内容。最后,记得在循环结束后关闭Redis连接。
阅读全文