欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java cleanup code

程序员文章站 2024-01-21 15:19:28
...

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!!!