Heim  >  Artikel  >  Java  >  So verwenden Sie die finalize()-Methode von Java

So verwenden Sie die finalize()-Methode von Java

王林
王林nach vorne
2023-04-30 14:43:06961Durchsuche

Eine alternative Verwendung von

finalize() in Java Jeder, der sich mit JAVA-Programmierung beschäftigt hat, weiß, dass es in JAVA einen Garbage-Collector-Mechanismus gibt, der normalerweise ausgeführt wird, wenn der Systemspeicher eine bestimmte Grenze erreicht ) wird den von Objekten belegten Speicher wiederverwenden, der nicht mehr verwendet wird. Daher berücksichtigen wir in JAVA-Programmen normalerweise nur das Erstellen von Objekten und kümmern uns nie um das Löschen von Objekten. Finalize() ist eine spezielle Methode, die JAVA für Klassen bereitstellt.

Der Arbeitsprozess des Garbage Collectors sieht ungefähr so ​​aus: Sobald der Garbage Collector bereit ist, den von nutzlosen Objekten belegten Speicherplatz freizugeben, ruft er zunächst die finalize()-Methode dieser Objekte auf und fordert dann tatsächlich den Speicher des Objekts zurück Objekte. Durch die Verwendung von finalize() können Sie einige spezielle Arbeiten ausführen, während der Garbage Collector ausgeführt wird. Das folgende Beispiel veranschaulicht eine clevere Verwendung von finalize().

Heutzutage übernehmen immer mehr kommerzielle Anwendungssysteme die WEB-Form. Bei Anwendungen im WEB-Stil ist jeder Seitenbesuch unabhängig und nicht miteinander verbunden. Selbst wenn mehrere Benutzer gleichzeitig dieselbe Seite der Anwendung besuchen, kennen sich die Benutzer nicht. Was sollten Sie tun, wenn Sie überprüfen möchten, welche Benutzer das System derzeit verwenden (z. B. möchten Systemadministratoren diese Informationen bei der Vorbereitung einer Datensicherung oder der Durchführung von Systemaktualisierungen wissen)? versteckt Es enthält Sitzungs- und Anwendungsobjekte, mit denen Entwickler das kontinuierliche Speichern und Teilen einiger Informationen erreichen können. Wenn ein Benutzer auf eine WEB-Anwendung zugreift, erstellt der WEB-Server automatisch ein Sitzungsobjekt, mit dem der Benutzer während der Sitzung Daten auf allen Seiten der Anwendung teilen kann. Die Anwendung ist ein globales Objekt der WEB-Anwendung. Mithilfe von Sitzungs- und Anwendungsobjekten können Sie alle Benutzerinformationen verfolgen.

Wenn der Benutzer den Browser öffnet und beginnt, die Anmeldeseite der WEB-Anwendung anzufordern, erstellt der WEB-Dienst eine Sitzung für den Kunden. Danach nutzt der Kunde diese Sitzung (die Timeout-Zeit). kann festgelegt werden, z. B. Tomcat-Server. Es wird in der Datei web.xml jeder Anwendung festgelegt. Wenn Sie den IE-Browser verwenden, hat die Sitzung eine entsprechende Beziehung zu der Verbindung, die durch die Client-IP-Adresse und die Client-Programmprozess-ID mit derselben IP-Adresse und demselben Prozess gemeinsam identifiziert wird (z. B. ein neues Fenster, das über IE-File-New geöffnet wird). -Fenster) haben die gleiche A-Sitzung, sodass die Sitzung zum Identifizieren jeder unabhängigen Clientanwendungsverbindung verwendet werden kann.

Das Folgende ist ein Beispiel:

Um die Verarbeitung zu erleichtern, erstellen Sie zunächst eine einfache Klasse (Benutzer), um Benutzerinformationen auszudrücken und die Sitzungs-ID zu speichern:

package com;  public class user {  public String name="";  public String sessionId="";  }
Eine andere Klasse (testSession) wird für die Benutzeranmeldung, -abmeldung und andere Zwecke verwendet Aktionen Informationen, die es dem System ermöglichen, Informationen über aktuell verbundene Benutzer zu verfolgen.

package com;  import java.util.Vector;  import com.user;  public class testSession {  public user User;  private Vector vsid;  public testSession()  {  User=new user();  }  public boolean verify(String username,String password)  throws Exception //验证用户/密码  {  return true;  }  public void setSessionVar(String sesid,Vector sid) {  this.User.sessionId=sesid;  this.vsid=sid;  }  private static synchronized void addappses(user puser,  Vector pvsid) { //记录一个新连接的用户  int pos=-1;  user l_user;  if (puser==null || pvsid==null)  return;  for(int i=0;i  l_user=(user)pvsid.get(i);  if(l_user.sessionId.equals(puser.sessionId)){  pos=i;  break;  }  }  if(pos==-1){  pvsid.add(puser);  }  else{  pvsid.set(pos,puser);  }  }  private static synchronized void removeappses(user puser,  Vector pvsid) { //移除一个退出的用户  int pos=-1;  user l_user;  if (puser==null || pvsid==null)  return;  for(int i=0;i  l_user=(user)pvsid.get(i);  if(l_user.sessionId.equals(puser.sessionId)){  pos=i;  break;  }  }  if(pos!=-1){  pvsid.remove(pos);  }  }  protected void finalize() {  this.removeappses(this.User,this.vsid);  }  public boolean login(String username) throws Exception  { //处理登录  this.User.name=username;  this.addappses(this.User,this.vsid);  return true;  }  public boolean logout() throws Exception  { //处理注销  this. finalize();  this.User=null;  this.vsid=null;  return true;  }  }
Jeder Benutzer erstellt ein testSession-Objekt, um die Informationen des Benutzers zu speichern. Um die Klasse testSession zu beschreiben, muss gleichzeitig eine weitere Datei logintest.jsp eingeführt werden. Diese JSP-Beispieldatei bietet eine einfache Schnittstelle für die Anmelde- und Abmeldeverarbeitung. Der Inhalt der Datei ist wie folgt:

<%@ page import=" com.testSession,  java.util.Vector"%>  <%@page contentType="text/html;charset=GBK" %>  <% request.setCharacterEncoding(response.  getCharacterEncoding());%>  <%  String actionType=request.getParameter("actiontype");  String actionResult="";  if(actionType!=null) {  if(actionType.equals("login")){ // -1-  String userName=request.getParameter("username");  if(userName==null || userName.equals("")){  ;  }  else{  String password=request.getParameter("password");  if(password==null)  password="";  testSession ts=  (testSession)session.getAttribute("testSession");  if(ts!=null) { //-1.1-  session.removeAttribute("testSession");  if( !ts.User.name.equals(""))  ts.logout();  }  ts=new testSession();  if(!ts.verify(userName,password)) {  //验证用户与密码,看是否合法用户  actionResult="login fail";  //非法用户,显示错误信息  }  else{ //验证成功  session.setAttribute("testSession",ts);  Vector app_vts=  (Vector)application.getAttribute("app_vts");  if(app_vts==null) {  app_vts=new Vector();  application.setAttribute("app_vts",app_vts);  }  ts.setSessionVar(session.getId(),app_vts);  ts.login(userName);  actionResult=userName+" login success";  }  }  }  if(actionType.equals("logout")){  testSession ts=  (testSession)session.getAttribute("testSession");  if(ts!=null) {  session.removeAttribute("testSession");  if( !ts.User.name.equals("")){ //-2-  actionResult=ts.User.name;  ts.logout();  }  session.invalidate();  }  actionResult=actionResult+" logout success";  }  }  else actionResult="null";  %>

Das obige ist der detaillierte Inhalt vonSo verwenden Sie die finalize()-Methode von Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen