1. 线程与进程
进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。
线程(英语:thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。在Unix System V及SunOS中也被称为轻量进程(lightweight processes),但轻量进程更多指内核线程(kernel thread),而把用户线程(user thread)称为线程。
2.java线程的实现方式
2.1 继承 Thread类
调用 Thread的start方法将产生异步调用
2.2 实现 Runnable接口
3.线程操作常见方法
3.1 currentThread()
currentThread() 方法可返回代码段正在被哪个线程调用的信息。
3.2 isAlive()
isAlive() 的功能是判断当前的线程是否处于活动状态
3.3 sleep()
方法sleep()的作用在指定的毫秒数内让当前“正在执行的线程”休眠(暂停执行)。这个“正在执行的线程”指的是this.currentThread()返回的线程
3.4 getId()
获取线程唯一标识
4. 停止线程的方式
4.1 interrupt()方法做线程停止标记
此方法在当前线程做了一个暂停的标记,并不会真正停止线程,需要程序控制停止
4.2 interrupted() and isInterrupted() 方法判断是否停止状态
- this.interrupted() :
测试当期线程是否已经中断 static方法,会清楚之前做的停止标记(让interrupt()失效)
- this.isInterrupted() :
测试线程是否已经中断
4.3 使用异常法停止线程
听过调用 this.interrupted() 方法,判断是否已经停止线程,如果已经停止,则手动抛出InterruptedException异常来停止线程的执行
5. 线程优先级
- 继承性
- 规则性
- 随机性
6.守护线程
Thread.setDaemon(true) 的方式创建守护线程,典型的垃圾回收线程