Java swing provides a Timer class to cause an action at a pre-defined rate. For instance, you could have a label that blinks at a pre-defined rate. The class has lot of practical usage.
The constructor takes Timer (int delay, ActionListener listener) as its parameter.
It has a method setCoalesce (boolean) that takes care of multiple pendingActionEvent firings:
import javax.swing.*;import java.awt.event.*;import java.awt.*;class Time extends JFrame implements ActionListener{ JLabel l; Time() { Container c=getContentPane(); c.setLayout(null); l =new JLabel("Blink"); l.setBounds(50,50,40,40); c.add(l); Timer t=new Timer(500,this);// t.setCoalesce(true); t.start(); } public void actionPerformed(ActionEvent e) { if(l.isVisible()) l.setVisible(false); else l.setVisible(true); } static void main(String[]arr)throws Exception { Time t=new Time (); t.setSize(200,200); t.setVisible(true); }}