ScheduledThreadPoolExecutor

In this chapter you will learn:

  1. Create a pool a scheduled task
  2. Swing based Animation with ScheduledThreadPoolExecutor

Create a pool a scheduled task

import java.util.concurrent.ScheduledThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
// j  a  va 2  s.c o  m
public class Main{

  public static void main(String args[]) {
    ScheduledThreadPoolExecutor stpe = new ScheduledThreadPoolExecutor(5);
    
    stpe.scheduleAtFixedRate(new Job1(), 0, 5, TimeUnit.SECONDS);
    stpe.scheduleAtFixedRate(new Job2(), 1, 2, TimeUnit.SECONDS);
  }
}

class Job1 implements Runnable {
  public void run() {
    System.out.println("Job 1");
  }
}

class Job2 implements Runnable {
  public void run() {
      for(int i=0;i<99;i++){
        System.out.println(i);
      }
  }
}

Swing based Animation with ScheduledThreadPoolExecutor

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.Shape;
import java.awt.geom.Ellipse2D;
import java.util.concurrent.ScheduledThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
// j  a v  a2 s .c  om
import javax.swing.JComponent;
import javax.swing.JFrame;

public class BallRoom {
  public static void main(String[] a){
    JFrame f = new JFrame();
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    f.setSize(200, 300);
    PaintSurface canvas = new PaintSurface();

    ScheduledThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(3);
    executor.scheduleAtFixedRate(canvas, 0L, 100L, TimeUnit.MILLISECONDS);
    
    f.getContentPane().add(canvas);
    f.setVisible(true);
    
  }
}
class PaintSurface extends JComponent implements Runnable{
  int i = 0;
  public void run() {
    repaint();
  }

  public void paint(Graphics g) {

    Graphics2D g2 = (Graphics2D) g;
    g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);

    Shape ball = new Ellipse2D.Float(i++, i++, 5, 5);
    g2.setColor(Color.RED);
    g2.fill(ball);
  }
}

Next chapter...

What you will learn in the next chapter:

  1. How to use Java standard output stream
  2. How to use Java standard input stream
Home » Java Tutorial » Thread
Thread introduction
Thread Name
Thread Main
Thread sleep
Thread Creation
Thread join and is alive
Thread priorities
Thread Synchronization
Interthread Communication
Thread Step
Thread suspend, resume, and stop
ThreadGroup
BlockingQueue
Semaphore
ReentrantLock
Executor
ScheduledThreadPoolExecutor