所有运行中的任务通常对应一个进程,当一个程序进入内存运行时,变成了一个进程,进程是系统进行资源分配和调度的一个独立的单位。进程包含下面三个特征:
- 独立性
- 动态性
- 并发性
多线程编程有如下优点:
- 进程之间不能共享内存,但线程之间共享内存非常容易
- 系统创建线程的代价较小,多任务并发效率高
- java语言内置了多线程功能的支持
Java中用Tread类来表示线程,另外也可实现Runnable接口。在java中还可以通过Callable和Future接口创建线程,该两个接口会在后续博客中讨论。
在线程的生命周期中,它主要经过5个状态:新建、就绪、运行、阻塞和死亡状态。 线程控制,Thread提供了让一个线程等待另一个线程完成的方法——join方法。
有一种线程,它是在后台运行的,它的任务是为其他的线程提供服务,这种线程被称为“后台线程”,又称为“守护线程”。JVM垃圾回收机制是典型的后台守护线程。后台线程有个特征:如果前台线程都死亡了,那么后台线程会自动死亡。yield方法让该线程转为就绪态,让给其他线程执行。线程还可以通过方法更改它的优先级。
Java线程同步提供了synchronized关键字,可同步代码块,还提供了Lock对象进行同步。Lock提供了比synchronized方法和代码块更广泛的锁定操作,Lock是控制多个线程对共享资源进行访问的工具。线程锁以后介绍。