Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Lenovo IdeaPad Slim 3: un notebook Snapdragon X economico
Lenovo IdeaPad Slim 3: un notebook Snapdragon X economico
Forte della piattaforma Qualcomm Snapdragon X, il notebook Lenovo IdeaPad Slim 3 riesce a coniugare caratteristiche tecniche interessanti ad uno chassis robusto, con autonomia di funzionamento a batteria che va ben oltre la tipica giornata di lavoro. Un notebook dal costo accessibile pensato per l'utilizzo domestico o in ufficio, soprattutto con applicazioni native per architettura ARM
Recensione OnePlus Watch 3 43mm: lo smartwatch che mancava per i polsi più piccoli
Recensione OnePlus Watch 3 43mm: lo smartwatch che mancava per i polsi più piccoli
OnePlus risponde alle esigenze di chi cerca un dispositivo indossabile dalle dimensioni contenute con OnePlus Watch 3 43mm. La versione ridotta del flagship mantiene gran parte delle caratteristiche del modello maggiore, offrendo un'esperienza completa in un formato compatto. Il suo limite più grande è abbastanza ovvio: l'autonomia non è il punto di forza di questo modello, ma si raggiungono comodamente le due giornate piene con un uso normale.
BOOX Note Air4 C è uno spettacolo: il tablet E Ink con Android per lettura e scrittura
BOOX Note Air4 C è uno spettacolo: il tablet E Ink con Android per lettura e scrittura
BOOX Note Air4 C rappresenta l'ultima incarnazione della categoria dei tablet E Ink a colori di Onyx, e combina le prestazioni di un dispositivo Android con l'ottima tecnologia Kaleido 3 per il display. Con schermo da 10,3 pollici, un processore Qualcomm Snapdragon 750G e 6 GB di RAM, promette un'esperienza completa per lettura, scrittura e produttività. Il prezzo lo posiziona nel segmento premium, ma questo dispositivo è un vero spettacolo!
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 09-04-2003, 09:55   #1
Pipppos
Senior Member
 
Iscritto dal: Jun 2001
Messaggi: 230
[java] e metodo finalize()

Si puo fare l'ovveride del metodo finalize() di Object?Mi serve eseguire una certa cosa quando il programma viene killato,ho provato ma non sembra andare
Pipppos è offline   Rispondi citando il messaggio o parte di esso
Old 09-04-2003, 11:59   #2
soalle
Senior Member
 
L'Avatar di soalle
 
Iscritto dal: Oct 2000
Città: Montreal (Canada)
Messaggi: 1309
Non ho mai provato a farlo, ma si dovrebbe riuscire (naturalmente richiamando un bel super.finalize(); )... considera che il metodo non viene richiamato in maniera deterministica ma solo quando inizia a frullare il gc...
A questo punto ho qualche dubbio sul fatto che il gc venga richiamato nel momento in cui viene terminato il programma (d'altra parte viene rilasciata tutta la memoria assegnata a quel processo)....

quindi prova a richiamarlo tu (mi pare con Runtime.gc(); oppure con RunTime.runFinalization()

Facci sapere che sono curioso...
soalle è offline   Rispondi citando il messaggio o parte di esso
Old 09-04-2003, 12:06   #3
soalle
Senior Member
 
L'Avatar di soalle
 
Iscritto dal: Oct 2000
Città: Montreal (Canada)
Messaggi: 1309
Ah... mi sembra ovvio ma è meglio specificare che...
naturalmente perché il gc possa fare il suo lavoro non ci devono essere più riferimenti all'oggetto in questione
soalle è offline   Rispondi citando il messaggio o parte di esso
Old 09-04-2003, 12:26   #4
Pipppos
Senior Member
 
Iscritto dal: Jun 2001
Messaggi: 230
Ho provato ma il metodo finalize() che ho ridefinito non viene richiamato per una uscita anomala dal programma ma soltanto se si termina con una System.exit,a me invece serve che il metodo in questione venga eseguito quando il programma viene killato.
Pipppos è offline   Rispondi citando il messaggio o parte di esso
Old 09-04-2003, 13:09   #5
soalle
Senior Member
 
L'Avatar di soalle
 
Iscritto dal: Oct 2000
Città: Montreal (Canada)
Messaggi: 1309
Non penso ci sia il modo di intercettare questo evento proveniente dall'OS...
Devi cercare una strada alternativa...
Magari se spieghi meglio il problema e le risorse che devi deallocare si riesce a capire meglio l'eventuale soluzione...

Considera inoltre che penso che neppure in Linux sia possibile intercettare il kill -9...
soalle è offline   Rispondi citando il messaggio o parte di esso
Old 09-04-2003, 14:13   #6
Pipppos
Senior Member
 
Iscritto dal: Jun 2001
Messaggi: 230
Il programma ha un thread principale che contiene tutto il corpo del programma,resta in background (non ha interfaccia) ed emette dei messaggi tramite dialogbox in corrispondenza di determinati eventi.
All'attivazione genera un file che mi serve x controllare che altre istanze non vengano eseguite,il file dovrebbe poi essere cancellato all'uscita.Il problema è che il prog non ha una funzione di uscita quindi verrebbe killato dall'arresto di windows,avevo quindi pensato di cancellare il file nel metodo finalize()
Pipppos è offline   Rispondi citando il messaggio o parte di esso
Old 09-04-2003, 14:25   #7
soalle
Senior Member
 
L'Avatar di soalle
 
Iscritto dal: Oct 2000
Città: Montreal (Canada)
Messaggi: 1309
Il file ti serve per creare una sola istanza del thread a livello di programmazione (cioé possibilità di istanziare un solo oggetto Thread) oppure ti serve per evitare che un utente lanci due volte il programma?
soalle è offline   Rispondi citando il messaggio o parte di esso
Old 09-04-2003, 16:03   #8
Pipppos
Senior Member
 
Iscritto dal: Jun 2001
Messaggi: 230
Mi serve per evitare che l'utente lanci n volte il programma xchè se lo facesse esisterebbero n istanze del programma e quindi in concomitanza all'evento n dialogbox.
Pipppos è offline   Rispondi citando il messaggio o parte di esso
Old 09-04-2003, 17:22   #9
soalle
Senior Member
 
L'Avatar di soalle
 
Iscritto dal: Oct 2000
Città: Montreal (Canada)
Messaggi: 1309
Allora prova a vedere le classi FileLock e FileChannel del package java.nio.*

Sono presenti solo dalla versione 1.4.x del jdk ma penso che dovrebbero fare al caso tuo...

... se trovi la soluzione naturalmente posta...
soalle è offline   Rispondi citando il messaggio o parte di esso
Old 09-04-2003, 17:49   #10
PGI
Bannato
 
L'Avatar di PGI
 
Iscritto dal: Nov 2001
Città: Verona
Messaggi: 1086
Re: java e metodo finalize()

Nel corso della discussione ho un po' perso il filo del discorso per cui prima di intromettermi avrei bisogno di una conferma:

in pratica tu vorresti eseguire del codice nel momento in cui la JVM viene chiusa e uno shutdownhook non ti basta perchè non gestisce il "killing" dell'applicazione da parte del sistema operativo?

Se la risposta è "NO" allora non ho capito niente, se è "SI" allora possiamo farci qualcosa.

Fammi sapere e in caso vediamo che si può fare.

Ciao.
PGI è offline   Rispondi citando il messaggio o parte di esso
Old 09-04-2003, 17:51   #11
soalle
Senior Member
 
L'Avatar di soalle
 
Iscritto dal: Oct 2000
Città: Montreal (Canada)
Messaggi: 1309
Cosa intendi per shutdownhook???
Mi piacerebbe esplorare questa cosa... intendi interagire con gli hook del sistema operativo tramite jni?
soalle è offline   Rispondi citando il messaggio o parte di esso
Old 09-04-2003, 18:04   #12
PGI
Bannato
 
L'Avatar di PGI
 
Iscritto dal: Nov 2001
Città: Verona
Messaggi: 1086
E' un "pezzo" di java che si usa sopratutto con i database, per evitare di lasciare aperte connessioni nel caso in cui il programma venga terminato brutalmente (ad esempio via TaskManger).

L'esempio più semplice è il metodo

[File].deleteOnExit(). Quando la jvm viene chiusa il file viene cancellato.

Quello che fa quel metodo è un'implementazione di "addShutDownHook(Thread t)" della classe Runtime.

Codice:
...
Runtime.getRuntime().addShutDownHook(shutDown);
...
class ShutDown extends Thread {
	public void run() {
		//...
		//operazioni "dell'ultimo minuto"
		//...
	}
}
Il problema è che funziona solo se c'è una chiamata al metodo Runtime.exit(int), cioè se l'applicazione termina regolarmente.

Per gestire "uscite brutali" si usa allora un gestore di segnali ma la faccenda diventa un po' più laboriosa perchè fa parte di un pacchetto (sun.misc) presente nel JDK ma non documentato.
PGI è offline   Rispondi citando il messaggio o parte di esso
Old 09-04-2003, 19:44   #13
soalle
Senior Member
 
L'Avatar di soalle
 
Iscritto dal: Oct 2000
Città: Montreal (Canada)
Messaggi: 1309
Interessante.... e buono a sapersi...
soalle è offline   Rispondi citando il messaggio o parte di esso
Old 09-04-2003, 20:19   #14
PGI
Bannato
 
L'Avatar di PGI
 
Iscritto dal: Nov 2001
Città: Verona
Messaggi: 1086
Interessante sì, ma poco "Java-style" perchè è platform-dependent e, come tutti i package sun.qualcosa, non è garantita la futura implementazione

Pippos non dà segni di vita (scherzo), lo prendo per un "SI" e posto un po' di codice (domani non sono on-line e magari deve trovare una soluzione in fretta)

Codice:
import sun.misc.*;
import java.io.*;

public class Prova {
  private ShutdownHandler shutDown=new ShutdownHandler();
  private ShutDownHook hook=new ShutDownHook();
  private boolean nostop=true;
  private File tempFile=null;

  Prova() {
    Signal.handle(new Signal("INT"),shutDown); //CTRL-C
    Signal.handle(new Signal("TERM"),shutDown); //CHIUSURA DEL SISTEMA

    //Signal.handle(new Signal("KILL"),shutDown);
    //fino al JDK v. 1.3 SHUTDOWN DA TASK MANAGER

    Runtime.getRuntime().addShutdownHook(hook);

    tempFile=new File("f:\\cancellami.txt");
    try {
      tempFile.createNewFile();
    } catch (IOException ex) {
      System.out.println(ex);
      System.exit(0);
    }

    //un ciclo infinito per verificare che funzioni
    //l'intercettazione dei segnali del sistema operativo
    while(nostop) {/*...*/}
  }

  public static void main(String[] args) {
    new Prova();
  }

  class ShutdownHandler implements SignalHandler {
    public void handle(Signal signal) {
      System.exit(0); //questo richiama l'hook
    }
  }

  class ShutDownHook extends Thread {
    public void run() {
      System.out.println("Cancello il file temporaneo");
      if(tempFile.exists()) {
        tempFile.delete();
      }
      System.out.println("il programma verrà chiuso tra 2 secondi");
      try {
        Thread.currentThread().sleep(2000);
      } catch (Exception e) {
        System.out.println(e);
      }
    }
  }
}
La classe qui sopra crea un file temporaneo e lo cancella quando la JVM viene terminata con il comando System.exit(0);la classe ShutDownHandler "forza" una chiamata all'uscita "naturale" della JVM anche quando Windows cerca di interromperne l'esecuzione allo spegnimento del sistema (il segnale in questo caso è quel "TERM") oppure quando viene premuta la combinazione CRTL-C ("INT"). Dalla versione 1.4 del JRE il segnale "KILL" sembra non funzionare più (corrisponde all'interruzione forzata da task manager) e non è una cattiva idea per ovvi motivi di sicurezza .
La chiusura effettiva della JVM è poi gestita dal Thread ShutDownHook che cancella il file "temporaneo".

Il pessimo ciclo infinito while e il suo indegno booleano "nostop" servono solo per simulare un'applicazione che gira costantemente.

Per una versione UNIX del programma i segnali dovrebbero essere "INT" "TERM" "QUIT" e (forse) anche "KILL"

Fammi sapere se è servito a qualcosa

Ciao.
PGI è offline   Rispondi citando il messaggio o parte di esso
Old 10-04-2003, 09:34   #15
Pipppos
Senior Member
 
Iscritto dal: Jun 2001
Messaggi: 230
Grazissime PGI la tua soluzione funziona bene e fà proprio a caso mio
Pipppos è offline   Rispondi citando il messaggio o parte di esso
Old 07-09-2010, 16:27   #16
mone.java
Senior Member
 
L'Avatar di mone.java
 
Iscritto dal: May 2008
Città: Seattle (WA)
Messaggi: 306
Quote:
Originariamente inviato da PGI Guarda i messaggi
Interessante sì, ma poco "Java-style" perchè è platform-dependent e, come tutti i package sun.qualcosa, non è garantita la futura implementazione

Pippos non dà segni di vita (scherzo), lo prendo per un "SI" e posto un po' di codice (domani non sono on-line e magari deve trovare una soluzione in fretta)

Codice:
import sun.misc.*;
import java.io.*;

public class Prova {
  private ShutdownHandler shutDown=new ShutdownHandler();
  private ShutDownHook hook=new ShutDownHook();
  private boolean nostop=true;
  private File tempFile=null;

  Prova() {
    Signal.handle(new Signal("INT"),shutDown); //CTRL-C
    Signal.handle(new Signal("TERM"),shutDown); //CHIUSURA DEL SISTEMA

    //Signal.handle(new Signal("KILL"),shutDown);
    //fino al JDK v. 1.3 SHUTDOWN DA TASK MANAGER

    Runtime.getRuntime().addShutdownHook(hook);

    tempFile=new File("f:\\cancellami.txt");
    try {
      tempFile.createNewFile();
    } catch (IOException ex) {
      System.out.println(ex);
      System.exit(0);
    }

    //un ciclo infinito per verificare che funzioni
    //l'intercettazione dei segnali del sistema operativo
    while(nostop) {/*...*/}
  }

  public static void main(String[] args) {
    new Prova();
  }

  class ShutdownHandler implements SignalHandler {
    public void handle(Signal signal) {
      System.exit(0); //questo richiama l'hook
    }
  }

  class ShutDownHook extends Thread {
    public void run() {
      System.out.println("Cancello il file temporaneo");
      if(tempFile.exists()) {
        tempFile.delete();
      }
      System.out.println("il programma verrà chiuso tra 2 secondi");
      try {
        Thread.currentThread().sleep(2000);
      } catch (Exception e) {
        System.out.println(e);
      }
    }
  }
}
La classe qui sopra crea un file temporaneo e lo cancella quando la JVM viene terminata con il comando System.exit(0);la classe ShutDownHandler "forza" una chiamata all'uscita "naturale" della JVM anche quando Windows cerca di interromperne l'esecuzione allo spegnimento del sistema (il segnale in questo caso è quel "TERM") oppure quando viene premuta la combinazione CRTL-C ("INT"). Dalla versione 1.4 del JRE il segnale "KILL" sembra non funzionare più (corrisponde all'interruzione forzata da task manager) e non è una cattiva idea per ovvi motivi di sicurezza .
La chiusura effettiva della JVM è poi gestita dal Thread ShutDownHook che cancella il file "temporaneo".

Il pessimo ciclo infinito while e il suo indegno booleano "nostop" servono solo per simulare un'applicazione che gira costantemente.

Per una versione UNIX del programma i segnali dovrebbero essere "INT" "TERM" "QUIT" e (forse) anche "KILL"

Fammi sapere se è servito a qualcosa

Ciao.
Ciao PGI scusa se ti rompo ma ho provato ad usare questo frammento di codice e con eclipse mi dice:

Multiple markers at this line
- Access restriction: The constructor Signal(String) is not accessible due to restriction on required library /usr/lib/jvm/
java-6-sun-1.6.0.20/jre/lib/rt.jar
- Access restriction: The type Signal is not accessible due to restriction on required library /usr/lib/jvm/java-6-
sun-1.6.0.20/jre/lib/rt.jar
- Access restriction: The method handle(Signal, SignalHandler) from the type Signal is not accessible due to
restriction on required library /usr/lib/jvm/java-6-sun-1.6.0.20/jre/lib/rt.jar
- Access restriction: The type Signal is not accessible due to restriction on required library /usr/lib/jvm/java-6-
sun-1.6.0.20/jre/lib/rt.jar

Cosa significa??? Quelle librerie sono forse state deprecate??? Esistono delle alternative??

Grazie mille!!!
__________________
"Considerate la vostra semenza fatti non foste a viver come bruti ma per seguir virtute e canoscenza"
mone.java è offline   Rispondi citando il messaggio o parte di esso
Old 07-09-2010, 17:05   #17
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Quote:
Originariamente inviato da mone.java Guarda i messaggi
Cosa significa??? Quelle librerie sono forse state deprecate??? Esistono delle alternative??

Grazie mille!!!
Ammazza se hai risvegliato i morti! (si fa per dire)
Sviluppi con Eclipse? Guarda qui
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Lenovo IdeaPad Slim 3: un notebook Snapdragon X economico Lenovo IdeaPad Slim 3: un notebook Snapdragon X ...
Recensione OnePlus Watch 3 43mm: lo smartwatch che mancava per i polsi più piccoli Recensione OnePlus Watch 3 43mm: lo smartwatch c...
BOOX Note Air4 C è uno spettacolo: il tablet E Ink con Android per lettura e scrittura BOOX Note Air4 C è uno spettacolo: il tab...
Recensione Sony Xperia 1 VII: lo smartphone per gli appassionati di fotografia Recensione Sony Xperia 1 VII: lo smartphone per ...
Attenti a Poco F7: può essere il best buy del 2025. Recensione Attenti a Poco F7: può essere il best buy...
“Non pagheremo”: 4chan contro le multe U...
ChatGPT e Google: spunta un retroscena s...
Ecco come ottenere 100 euro di sconto ac...
La serie OPPO Reno14 arriva in Europa (e...
Addio barriere linguistiche: NVIDIA offr...
Prezzo di 23.000 euro e 40.000 ordini in...
AliExpress lancia sconti folli con Klarn...
Formula 1, Toto Wolff è sicuro: &...
Galaxy S25 Edge e Ultra: super offerte A...
Bungie, cambio ai vertici e caos in Dest...
Auricolari Beats in super sconto su Amaz...
La Jeep Wagoneer S elettrica è gi...
Xiaomi SU7 e YU7, record di consegne e f...
Triplo sconto KTC: 190–280Hz e 2K curvo,...
Più che mini è un micro PC...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 15:11.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v