Java cleanup code

Java shutdown hook guarantee that clean-up code is always run, regardless of how the user terminates the application.

Here is an example from Hadoop:

java 代码
  1. /**  
  2.  * A class to track the list of DFS clients, so that they can be closed  
  3.  * on exit.  
  4.  * @author Owen O'Malley  
  5.  */  
  6. private static class ClientFinalizer extends Thread {   
  7.   private List clients = new ArrayList();   
  8.   
  9.   public synchronized void addClient(DFSClient client) {   
  10.     clients.add(client);   
  11.   }   
  12.   
  13.   public synchronized void run() {   
  14.     Iterator itr = clients.iterator();   
  15.     while (itr.hasNext()) {   
  16.       DFSClient client = (DFSClient) itr.next();   
  17.       if (client.running) {   
  18.         try {   
  19.           client.close();   
  20.         } catch (IOException ie) {   
  21.           System.err.println("Error closing client");   
  22.           ie.printStackTrace();   
  23.         }   
  24.       }   
  25.     }   
  26.   }   
  27. }   
  28.   
  29. // add a cleanup thread   
  30. private static ClientFinalizer clientFinalizer = new ClientFinalizer();   
  31. static {   
  32.   Runtime.getRuntime().addShutdownHook(clientFinalizer);   
  33. }  

Elegant and useful!!!

 

 

你可能感兴趣的:(java,thread,hadoop,IE,UP)