Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java-我有100个包含ip地址的文件,你如何在一小时内高效地处理每个文件_Java_Multithreading_File - Fatal编程技术网

Java-我有100个包含ip地址的文件,你如何在一小时内高效地处理每个文件

Java-我有100个包含ip地址的文件,你如何在一小时内高效地处理每个文件,java,multithreading,file,Java,Multithreading,File,我使用freegeoip api查找每个ip的国家名称,但呼叫限制为每小时15000次。 如何在一小时内高效处理每个包含15000个IP的文件。 Thread.sleep有效吗?如果它们需要15分钟来处理,最基本的解决方法就是只记录开始时间。完成该过程后,查看从当前时间到开始时间再加上一小时的剩余毫秒数 long startTime = System.currentTimeMillis(); // do the requests long currentTime = System.curr

我使用freegeoip api查找每个ip的国家名称,但呼叫限制为每小时15000次。 如何在一小时内高效处理每个包含15000个IP的文件。
Thread.sleep有效吗?

如果它们需要15分钟来处理,最基本的解决方法就是只记录开始时间。完成该过程后,查看从当前时间到开始时间再加上一小时的剩余毫秒数

 long startTime = System.currentTimeMillis();
 // do the requests
 long currentTime = System.currentTimeMillis();
 long timePassed = currentTime-startTime;
 long millisInHour = 60*60*1000;
 long timeToWait = millisInHour - timePassed;
 Thread.sleep(timeToWait);
<>你可以考虑的是Time.TealEntFixeDRET()来释放每小时15000的文件。更好的是,使用Quartz或类似的框架来安排每小时的作业。如果在Linux上运行,您甚至可以使用cron将程序安排为每小时运行一个文件。在这种情况下,您的机器上不只是有一个Java进程一直在后台运行


另一种选择是不使用freegoip.net,而是使用此处提供的软件来运行您自己的服务器或将功能集成到您的程序中。

是的,Thread.sleep就是工作。您的意思是要将它们分散在一个小时内,还是要执行15000次,然后等待,直到您还有15000个电话可用?或者,您是否担心您无法在一小时内拨打15000个电话,因此无法最大限度地利用您的电话?你试过什么?你有什么问题?@JohnC任何东西要么把一个文件分散一个小时,要么等到一个小时过去,我再接到15000个电话make@JohnC一个15000条记录的文件最多需要15分钟来处理,然后我将线程放入睡眠45分钟。这是一个好方法吗?我关心的是,如果线程执行中断,我必须从头开始。