Ingram
Ingram

Reputation: 674

How do I refresh a connection every 20 seconds?

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

Answers (2)

durron597
durron597

Reputation: 32323

Use a ScheduledExecutorService. Wrap the task in a class, as follows:

NewsTask.java

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:

URLConnectionReader.java

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

Sleiman Jneidi
Sleiman Jneidi

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

Related Questions