home *** CD-ROM | disk | FTP | other *** search
/ PC Online 1998 January / PCO0198.ISO / browser / net_linx / java40.jar / netscape / plugin / composer / PluginKiller.class (.txt) < prev    next >
Encoding:
Java Class File  |  1997-11-03  |  2.1 KB  |  77 lines

  1. package netscape.plugin.composer;
  2.  
  3. import java.util.Vector;
  4.  
  5. class PluginKiller implements Runnable {
  6.    private Vector list = new Vector();
  7.  
  8.    PluginKiller() {
  9.       SecurityManager.enablePrivilege("SuperUser");
  10.       Thread var1 = new Thread(this, "Composer Plug-in Killer");
  11.       var1.start();
  12.    }
  13.  
  14.    synchronized void kill(ThreadGroup var1) {
  15.       this.list.addElement(var1);
  16.       this.notifyAll();
  17.    }
  18.  
  19.    synchronized ThreadGroup getPluginThreadGroup() {
  20.       while(this.list.isEmpty()) {
  21.          try {
  22.             this.wait();
  23.          } catch (InterruptedException var3) {
  24.          }
  25.       }
  26.  
  27.       int var1 = this.list.size() - 1;
  28.       ThreadGroup var2 = (ThreadGroup)this.list.elementAt(var1);
  29.       this.list.removeElementAt(var1);
  30.       return var2;
  31.    }
  32.  
  33.    public void run() {
  34.       while(true) {
  35.          try {
  36.             ThreadGroup var1 = this.getPluginThreadGroup();
  37.             synchronized(var1){}
  38.  
  39.             try {
  40.                try {
  41.                   var1.wait(300L);
  42.                } catch (InterruptedException var31) {
  43.                }
  44.  
  45.                if (var1.activeCount() > 0) {
  46.                   try {
  47.                      SecurityManager.enablePrivilege("SuperUser");
  48.                      var1.stop();
  49.                      var1.wait(5000L);
  50.                   } catch (InterruptedException var29) {
  51.                   } finally {
  52.                      SecurityManager.revertPrivilege();
  53.                   }
  54.                }
  55.  
  56.                try {
  57.                   SecurityManager.enablePrivilege("SuperUser");
  58.                   var1.destroy();
  59.                } catch (Exception var27) {
  60.                } finally {
  61.                   SecurityManager.revertPrivilege();
  62.                }
  63.             } catch (Throwable var32) {
  64.                throw var32;
  65.             }
  66.          } catch (Exception var33) {
  67.             System.out.println("Exception occurred while deleting Composer Plug-in thread group: ");
  68.             ((Throwable)var33).printStackTrace();
  69.          }
  70.       }
  71.    }
  72.  
  73.    public String toString() {
  74.       return new String("Plugin thread killer! Composer plugins to be disposed of: " + this.list);
  75.    }
  76. }
  77.