2011-09-02 12 views
6

Incremento del numero di thread (id) quando si termina il thread e viene creato un nuovo thread. Java 7 gode semplicemente di numeri in aumento o sto facendo qualcosa di sbagliato?Java 7: riutilizzo dei thread? (disconnetti - riconnetti)

Sto costruendo un'applicazione di servizio utilizzando Java 7 che crea un nuovo thread quando viene stabilita una connessione e quindi fornisce la connessione. Quando il servizio riceve un messaggio di chiusura, viene eliminato da un ciclo e consente il completamento del codice nella discussione. Quindi, la vita del thread è presumibilmente terminata, come ho capito (proprio come qualsiasi oggetto istanza). Java 7 non usa Thread.stop() o Thread.destroy() o qualcosa del genere. (Non dopo v5 credo.)

Ho un'interfaccia con i pulsanti per "Connessione aperta", "Chiudi connessione" e "Invia messaggio" e le istruzioni println corrispondenti nella discussione in modo da poter vedere cosa sta succedendo. Una delle variabili che stampo è Thread.currentThread(). Quando apro la prima connessione, currentThread() è Thread [Thread-0,5, main]. Chiudo la connessione e cancello il messaggio indicando che Thread [Thread-0,5, main] sta terminando.

OK, quindi ora è di nuovo al punto di partenza, giusto? Senza fili

Ho fatto clic per connettermi di nuovo e inserire Thread [Thread-1,5, main]. Guarda quello? "Thread-1" invece di "Thread-0". Ogni volta che lo faccio, il numero sale di 1.

Commento re (domanda laterale se non è troppo disturbo, Qual è il "5, main" significa.?): Arresto filo: Why are Thread.stop, Thread.suspend and Thread.resume Deprecated?.

risposta

2

Thread-0,5, principale

0: id

5: priorità

principale: nome

filo id è long; se creiamo un milione di thread al secondo, dopo 300 mila anni, l'ID traboccherà.

3

Il numero che si riferisce non indica il numero corrente di thread in esecuzione ... Thread- "n" è solo un numero generato automaticamente utilizzato quando non si specifica esplicitamente un nome per il thread. Ogni istanza di Thread creata senza un nome, avrà il valore n incrementato di 1. Questo numero viene utilizzato solo per identificare un'istanza di thread.

Tuttavia, se si utilizza un pool di thread, l'attività che è stata sottoposta all'esecuzione potrebbe essere eseguita in un thread precedentemente utilizzato per altre attività.

Inoltre, questo non è niente di particolare di Java 7. Java 6 ha esattamente lo stesso comportamento (e sospetto anche le versioni precedenti).

+0

Grazie. Ehi, rallegrati!Ora ho abbastanza punti per votare la tua risposta. Sai cosa significa "5, principale"? –

+0

Anche se penso che questo significhi l'id del thread sarà come il numero di hamburger venduti da McDonald's. Spero che almeno stiano usando BigInteger. –

+0

Sospetto che il suffisso "5, principale" debba essere aggiunto da chi ha creato (o mantiene) il thread. –

0

numero filettatura (id) incrementa quando il filo viene terminata

No.

e un nuovo thread creato.

Sì.

+0

Grazie per il chiarimento. Vedo che non ci avevo davvero pensato quando ho scritto la domanda. –