Java 线程简述
线程的作用
线程(英语:Thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。
简而言之,线程的存在是为了实现程序的并发操作,提高执行效率。
线程的生命周期
线程的主要生命周期如上图所示,主要分为五个状态:
- 新建态(New):Java 中使用 new 关键字创建线程之后,这时线程即处于新建态。
- 就绪态(Runnable):在线程调用 start() 方法之后,线程即处于就绪态。
- 运行态(Running):当就绪态的线程获得 CPU 并且开始执行 run() 方法之后,线程就会处于运行状态。
- 阻塞态(Blocked):在处于运行态的线程调用了 sleep() 或 wait() 又或者是调用了一个阻塞式的 IO 方法之后,线程将会处于阻塞状态。
- 死亡态(Dead):在线程中的 run() 方法执行完毕、线程抛出异常、调用线程的 stop() 这几种情形下线程将会进入死亡态。
线程的实现方法
Java 中线程的实现主要是通过 Thread 类和 Runnable 接口。
通过 Thread 类实现:
1
2
3
4
5
6Thread thread = new Thread(new Runnable() {
public void run() {
/** do some things **/
}
});通过 Runnable 接口实现:
1
2
3
4
5
6
7
8public class MyThread implements Runnable {
public void run() {
/** do some things **/
}
}
MyThread myThread = new MyThread();
Thread thread = new Thread(myThread);
相对而言第二种方式更为合理一些,第二种方式创建的线程类只实现了 Runnable 接口,还可以再继承其它的父类。
参考资料
【Java并发编程】之六:Runnable和Thread实现多线程的区别(含代码)