# 练习3：检查线程

您将在本练习中查看组成Blink项目的线程组、线程和栈帧。您还将学习如何在程序执行的过程中 跟踪变量值的变化。

1. 选择调试->线程/堆栈。
   将显示“Java Development Environment线程/堆栈”窗口。

   Blink项目共包含三个线程组，每个线程组都带有一个小图形：

   - `main` -- 包含在Java Development Environment中运行的线程
   - `sun.applet.AppletViewer.main` -- 包含在applet小程序查看器中运行的线程
   - `file:/your-installation-directory/jws/Blink/-threadGroup` -- 包含与Blink项目直接相关的线程
   `sun.applet.AppletViewer.main`线程组共包括三个线程；而`Blink`文件线程组则包括两个线程。
2. 请看`sun.applet.AppletViewer.main`线程组中的第一个线程`"AWT-EventQueue-0"`。

   您将看到下列内容：

   - 线程名是`java.awt.EventDispatch`
   - 线程状态是“位于断点处”。
   - 运行线程的优先级是5。优先级最高的线程最先执行。

   线程旁边的小图形可以作为判断线程状态的另一个线索。您可能见到的小图形包括：
   线程处于暂停状态。
   线程停在一个断点上。
   无法确定线程的状态。
   线程处于僵化状态。
   线程处于运行状态。
   线程处于睡眠状态。
   线程正等待一个条件变量。

3. 请看组成线程类的调用栈。
   调用栈中包括所有已经调用，但尚未返回的方法。程序停止时正在执行的 `Blink.paint` 位于堆栈的最上面。栈帧被高亮显示，以便可以很容易地指出程序停止的地方。 每个栈帧都带有一个小图形。
4. 单击小图形旁边的 +，打开`Blink.paint`栈帧。
   Java Development Environment将显示`Blink.paint`中的局部变量及其当前值。请看变量`word`。 再看`word`变量的值。
5. 单击“编辑/调试”工具栏中的“继续”按钮。
   程序将继续运行这个循环，并在第二次到达断点时停下来。“线程/堆栈”显示会被更新， `word`变量的值也随之更改。其值在“Java Development Environment is really cool :-)”中循环。
6. 单击小图形旁边的 +，打开`this`对象。
   Java Development Environment将该对象展开，以显示项目内含的所有变量。您可以对嵌入对象（例如，`peer`） 重复这个动作。
7. 单击`this`对象左边的 - 。
   Java Development Environment又把该对象折叠起来。

下一课：

  练习4：单步执行一个方法