Esercizio 1.2: Raccolta dei dati di thread

Prima di iniziare, è necessario aver completato l'Esercizio 1.1: Importazione della risorsa richiesta.

Scenario: il programma da esaminare viene eseguito per un breve intervallo di tempo e si arresta improvvisamente. Questa situazione si verifica ogni volta che si esegue il programma. Questa condizione è tipica delle condizioni di stallo del thread, quindi viene richiesto di esaminare le modalità di interazione dei thread in questo programma.

Per individuare possibili condizioni di stallo del thread, come prima operazione è necessario raccogliere i dati di thread, quindi analizzare i dati utilizzando la vista Thread nella prospettiva Creazione profili e log.

La raccolta dei dati di thread consente di individuare le condizioni di stallo oppure di escludere i thread come causa di errore dell'applicazione.

Preparazione per la raccolta dei dati di thread

Per raccogliere i dati di thread, è necessario trovarsi nella prospettiva Creazione profili e log. Per passare alla prospettiva:

  1. Nella barra dei menu Software Development Platform, selezionare Finestra> Apri prospettiva > Altro... Viene visualizzata la finestra di dialogo Seleziona prospettiva.
  2. Nella parte inferiore sinistra della finestra, fare clic su Mostra tutto. Nella casella di controllo viene visualizzato un segno di spunta.
  3. Nell'elenco delle prospettive, selezionare Creazione profili e log e fare clic su OK.
  4. Se viene visualizzata la finestra di dialogo Confirm Enablement, fare clic su Always enable capabilities and don't ask me again quindi fare clic su OK.
  5. L'applicazione Software Development Platform passa alla prospettiva Creazione profili e log.

Raccolta dei dati di thread per l'applicazione philosopher

Per raccogliere i dati:

  1. Nella barra dei menu di Software Development Platform, selezionare Finestra > Mostra vista > Console per aprire la vista Console. Tale vista consente di seguire l'elaborazione dell'applicazione.
  2. Creare una configurazione di creazione profili:
    1. Nella barra dei menu, selezionare Esegui > Profilo... Viene visualizzata la finestra di dialogo Profilo.
    2. Nell'elenco delle configurazioni, fare doppio clic sulla voce Applicazione Java. Viene visualizzata la voce Nuova_configurazione.
    3. Nel campo Nome, digitare PhilosopherThreads.
    4. Nella scheda Principale, se philosopher non è già presente nel campo Progetto, effettuare le seguenti operazioni:
      1. Accanto al campo Progetto, fare clic su Sfoglia. Viene visualizzata la finestra di dialogo Seleziona progetto.
      2. Selezionare philosopher, quindi fare clic su OK.
    5. Accanto al campo Classe principale, fare clic su Ricerca.
    6. Nella finestra di dialogo Scegli tipo principale, selezionare MaitreDHote, quindi fare clic su OK.
    7. Se si utilizza una macchina JVM (IBM Java Virtual Machine), effettuare le seguenti operazioni:
      1. Nella finestra di dialogo Profilo, fare clic sulla scheda Argomenti.
      2. Sotto Argomenti VM, digitare -Xj9 per specificare la versione JVM corretta.
    8. Nella finestra di dialogo Profilo, fare clic sulla scheda Creazione profili.
    9. Nella scheda secondaria Panoramica, selezionare la casella di controllo della serie di creazione profili Analisi thread (una serie di creazione profili definisce il tipo di dati di creazione profili che deve essere raccolta per l'esecuzione).
  3. Fare clic su Profilo. L'applicazione viene eseguita e la visualizzazione cambia come indicato di seguito:

Ad un certo punto l'esecuzione dell'applicazione si arresta. L'output è simile al seguente:

. . .
philo#3: waiting for right fork#3
philo#2: waiting for right fork#2
philo#1: waiting for right fork#1
philo#0: waiting for right fork#0
HeadWaiter: all philosophers are locked for 6 times.
exiting application.

Questo è il punto in cui il programma si arresta. Tuttavia, per questa esecuzione i dati di thread sono stati raccolti ed è possibile quindi analizzare le cause dell'arresto.

Se non è possibile raccogliere i dati

Per poter raccogliere qualsiasi tipo di dati di creazione profili, l'Agent Controller deve essere in esecuzione. Se viene visualizzato un messaggio indicante che l'Agent Controller non è disponibile, accertarsi che l'Agent Controller sia stato installato, avviarlo manualmente e riprovare. Per istruzioni, fare riferimento alla guida di installazione. È possibile accedere alla guida di installazione utilizzando il launchpad oppure è possibile reperirla sul CD del prodotto in disk1/install.html.

Una volta raccolti i dati, si è pronti per iniziare l'Esercizio 1.3: Individuazione dei colli di bottiglia del thread.

Terminologia | Feedback
(C) Copyright IBM Corporation 2000, 2005. Tutti i diritti riservati.