Reputation: 674
I wish to refresh an open connection every 20 seconds as a webpage updates
How do I add to the code below to refresh the connection?
import java.net.*;
import java.io.*;
public class URLConnectionReader {
public static void main(String[] args) throws Exception {
URL oracle = new URL("https://news.google.co.uk/");
URLConnection yc = oracle.openConnection();
BufferedReader in = new BufferedReader(new InputStreamReader(yc.getInputStream()));
String inputLine;
while ((inputLine = in.readLine()) != null)
System.out.println(inputLine);
in.close();
}
}
Upvotes: 0
Views: 494
Reputation: 32323
Use a ScheduledExecutorService
. Wrap the task in a class, as follows:
import java.net.*;
import java.io.*;
public class NewsTask implements Runnable {
@Override
public void run() {
URL oracle = new URL("https://news.google.co.uk/");
URLConnection yc = oracle.openConnection();
BufferedReader in = new BufferedReader(new InputStreamReader(yc.getInputStream()));
String inputLine;
while ((inputLine = in.readLine()) != null)
System.out.println(inputLine);
in.close();
}
}
Then, have the task run like this:
import java.util.concurrent.*;
public class URLConnectionReader {
public static void main(String... args) {
NewsTask task = new NewsTask();
ScheduledExecutorService service = Executors.newScheduledThreadPool(1);
service.scheduleAtFixedRate(task, 0L, 20L, TimeUnit.SECONDS);
}
}
Upvotes: 1
Reputation: 23329
A ScheduledExecutorService could be what you looking for. You just need to wrap your logic in a Runnable
an submit it to the executor
.
ScheduledExecutorService executor = Executors.newScheduledThreadPool(1);
executor.scheduleAtFixedRate(()->{
... your task
}, 0L, 20L, TimeUnit.SECONDS);
Or declare a Runnable
explicitly if you aren't using Java 8.
Runnable runnable = new Runnable(){
void run(){
.. your code
}
};
executor.scheduleAtFixedRate(runnable, 0L, 20L, TimeUnit.SECONDS);
Upvotes: 2