Domanda

In un metodo hook di spegnimento, ho bisogno che invii un messaggio a un altro processo per dire che ha l'arresto. Il mio attuale codice di gestione dei messaggi richiede che il messaggio sia scritto in una coda, questa coda viene elaborata da un altro thread e inviata ovunque. In questo caso, per essere scritto in un file pipe da un altro thread.

In un hook di spegnimento, posso garantire che questi thread saranno ancora in esecuzione? Ho diversi hook di spegnimento ma questi sono tutti per gestire altre cose che non richiedono altri thread.

L'esecuzione è minima. Eseguirà circa 15 righe di codice + qualsiasi attesa necessaria per scrivere nel file, che dovrebbe anche essere minima.

È stato utile?

Soluzione

Dalla descrizione Javadoc di addShutdownHook :

" Nota che i thread daemon continueranno a essere eseguiti durante la sequenza di spegnimento, come i thread non daemon se l'arresto è stato avviato invocando il metodo di uscita . "

Detto questo, direi che è sicuro supporre che il tuo thread sarà ancora in esecuzione e che sei in grado di comunicare con esso. L'unica cosa su cui mi metterei in guardia è fare affidamento sul fatto che i tuoi ganci di chiusura funzionino in un ordine deterministico

Altri suggerimenti

Sembra che tu abbia bisogno di un processo di spegnimento in più passaggi. In un ambiente multithread, non vorrei contare semplicemente sulla valutazione delle righe di codice che devi eseguire per darti una guida sulla tua procedura di spegnimento ...

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top