## 什么是线程

一个关于计算机的简化的视图是：它有一个执行计算的处理机、包含处理机所执行的程序的ROM(只读存储器)、包含程序所要操作的数据的RAM(只读存储器)。在这个简化视图中，只能执行一个作业。一个关于最现代计算机比较完整的蓝图允许计算机同时执行一个以上的作业。线程包含三个部分：

处理机

代码

数据

## 创建线程

一个Thread类构造函数带有一个参数，它是Runnable的一个实例。一个Runnable是由一个实现了Runnable接口(即，提供了一个public void run()方法)的类产生的。

例如：

1. public class ThreadTest {

2. public static void main(String args[]) {

3. Xyz r = new Xyz()；

4. Thread t = new Thread(r)；

5. }

6. }

7.

8. class Xyz implements Runnable {

9. int i；

10. public void run() {

11. while (true) {

12. System.out.println("Hello " + i++)；

13. if (i == 50) break；

14. }

15. }

16. }

## 启动线程

使用start()方法

使线程置于可运行状态

一个新创建的线程并不自动开始运行。你必须调用它的start()方法。例如，你可以发现上例中第4行代码中的命令：

t.start()；

调用start()方法使线程所代表的虚拟处理机处于可运行状态，这意味着它可以由JVM调度并执行。这并不意味着线程就会立即运行。

## 终止一个线程

当一个线程结束运行并终止时，它就不能再运行了。

可以用一个指示run()方法必须退出的标志来停止一个线程。

1. public class Xyz implements Runnable {

2. private boolean timeToQuit=false；

3.

4. public void run() {

5. while(! timeToQuit) {

6. ...

7. }

8. }

9. public void stopRunning() {

10. timeToQuit=true；

11. }

12. }

13. public class ControlThread {

14. private Runnable r = new Xyz()；

15. private Thread t = new Thread(r)；

16.

17. public void startThread() {

18. t.start()；

19. }

20.

21. public void stopThread() {

22. // use specific instance of Xyz

23. r.stopRunning()；

24. }

25. }