java使用线程请求访问每次间隔10分钟连续5次,之后停止请求

java使用线程请求访问每次间隔10分钟连续5次,收到相应的时候停止请求

package com.qlwb.business.util;
/**
 * 
 * 
 * @类编号:
 * @类名称:RequestTask
 * @内容摘要:  若开发者发出了回调通知,却没有收到兑吧ok响应时,开发者需重试5次,每次间隔10分钟。
 * @author:鹿伟伟
 * @创建日期:2016年4月15日 下午4:25:20
 * @修改人:
 * @修改日期:
 * @修改描述:简单描述修改的内容
 * @version 1.0.0
 *
 */
public class RequestTask implements Runnable {
    private String url;
    private String param;
    private String status="false";
    public RequestTask(String url, String param) {
        super();
        this.url = url;
        this.param = param;
    }

    @Override
    public void run() {
        int i = 1;
        int max = 5;
        while (true) {
            String result=HttpRequest.sendPost(url, param);
            i++;
            if ("ok".equals(result)) {
                status="ok";
                break;
            }
            if (i > max ) {
                break;
            }
            try {
                Thread.sleep(10*60*1000);//每次间隔10分钟。
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }

    public String getStatus() {
        return status;
    }
}

转载于:https://www.cnblogs.com/luweiwei/p/5968497.html

Java中,频繁地发送60API请求可以在一个循环中通过`Thread.sleep()`函数结合`ExecutorService`或者`Future`等工具来实现。这里是一个简单的示例,使用`ExecutorService`并发处理任务: ```java import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; public class APIRequest { private static final int API_REQUESTS = 60; private static final long SLEEP_TIME_MILLIS = 1000; // 每个请求间隔1秒 public static void main(String[] args) throws InterruptedException { ExecutorService executor = Executors.newFixedThreadPool(5); // 创建一个线程池,可以根据实际需求调整线程数 for (int i = 0; i < API_REQUESTS; i++) { Runnable requestTask = () -> sendApiRequest(); // 定义一个任务,里面包含发送请求的方法 executor.submit(requestTask); // 提交任务到线程池 executor.shutdown(); // 如果所有请求都提交完毕,关闭线程池 if (i % 10 == 0) { // 每完成10请求暂停一秒 Thread.sleep(SLEEP_TIME_MILLIS); } } executor.awaitTermination(1, TimeUnit.MINUTES); // 等待所有任务完成 System.out.println("所有请求完成"); } private static void sendApiRequest() { // 这里只是一个占位符,你需要替换为实际的API请求操作 System.out.println("Sending API request..."); } } ``` 在这个例子中,我们创建了一个固定大小的线程池,并在一个循环中提交任务。每10请求之间会有一个短暂的睡眠时间(这里是1秒),以控制请求频率。 注意:这只是一个基本示例,实际应用中需要考虑网络延迟、错误处理以及API的速率限制等因素。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值