多线程的概念
多线程是进程执行过程中产生的多条执行线索。
线程是比进程执行更小的单位。
线程不能独立存在,必须存在于进程中,同一进程的各线程间共享进程空间的数据。
每个线程有它自身的产生、存在和消亡的过程,是一个动态的概念。
多线程意味着一个程序的多行语句可以看上去几乎在同一时间内同时运行。
线程创建、销毁和切换的负荷远小于进程,又称为轻量级进程(lightweight process)。
多线程

用Thread类的子类创建线程
首先需从Thread类派生出一个子类,在该子类中重写run()方法。
例:
class hand extends Thread
{
public void run()
{……}
}
然后用创建该子类的对象
Lefthand left=new Lefthand();
Righthand right=new Righthand();
最后用start()方法启动线程
left.start();
right.start();
用Thread类的子类创建多线程的关键性操作
定义Thread类的子类并实现用户线程操作,即run()方法的实现。
在适当的时候启动线程。
由于Java只支持单重继承,用这种方法定义的类不可再继承其他父类。
用Runnable()接口实现线程
首先设计一个实现Runnable接口的类;
然后根据需要重写run方法;
再创建该类对象,以此对象为参数建立Thread类的对象;
调用Thread类对象的start方法启动线程,将CPU执行权转交到run方法。
线程的中断
当线程的run方法执行方法体中最后一条语句后,并经由执行return语句返回时,或者出现了在方法中没有捕获的异常时,线程将终止,让出CPU使用权。
调用interrupt()方法也可终止线程。interrupt()方法不仅可中断正在运行的线程,而且也能中断处于blocked状态的线程,此时interrupt()方法会抛出一个InterruptedException异常。
Java提供了几个用于测试线程是否被中断的方法。
线程的状态
通过各线程的状态变换,可以控制各个线程轮流使用CPU,体现多线程的并行性特征。
线程一共有如下6种状态:
New (新建)
Runnable (可运行)
Blocked (被阻塞)
Waiting (等待)
Timed waiting (计时等待)
Terminated (被终止)

Thread类有三个与线程优先级有关的静态量:
MAX_PRIORITY:最大优先权,值为10;
MIN_PRIORITY:最小优先权,值为1;
NORM _PRIORITY:默认优先权,值为5。