Java写的一个定时器,多线程:
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package javaapplication1;
import static java.lang.Thread.sleep;
import java.nio.ByteBuffer;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
* @author Qyee
*/
public class JavaApplication1 {
private static final Object lock = new Object();
private static Thread execTrhead;
private static AtomicBoolean bRunning = new AtomicBoolean(false);
/**
* @param args the command line arguments
*/
public static void main(String[] args) throws ParseException, InterruptedException {
// TODO code application logic here
execTrhead = new Thread(new Runnable() {
public void run() {
do {
bRunning.set(true);
System.out.println("doing 1");
synchronized (lock) {
try {
lock.wait(1000);
} catch (InterruptedException ex) {
Logger.getLogger(JavaApplication1.class.getName()).log(Level.SEVERE, null, ex);
}
}
System.out.println("doing 2");
} while (bRunning.get());
}
});
execTrhead.start();
while (true) {
System.out.println("notify");
sleep(2000);
synchronized (lock) {
lock.notify();
}
}
}
}