什么是线程
线程是为了解决并发编程引入的机制,线程相比进程来说更轻量。
创建线程比创建进程——开销更小
销毁线程比销毁进程——开销更小
调度线程比调度进程——开销更小
进程包含线程,同一进程里的若干线程之间,共享着内存资源和文件描述符表
每个线程被独立调度执行,每个线程都有自己的状态/优先级/上下文/记账信息
进程是操作系统资源分配的基本单位
线程是操作系统调度执行的基本单位
Thread常见的构造方法
Thread() 创建线程对象
Thread(Runnable target) 使用Runnable对象创建线程对象
Thread(String name) 创建线程对象,并命名
Thread(Runnable target,String name) 使用Runnable对象创建线程对象,并命名
把t设置为守护进程/后台进程。此时进程的结束与否和 t 无关了。
在真正调用start之前,调用t.isAlive就是false.调用start之后,isAlive就是true
isAlive是在判断,当前系统里面的这个线程是不是针对有了。
另外,如果内核里线程把run干完了,此时线程销毁。pcb随之释放。但是Thread t 这个对象还不一定被释放,此时 isAlive 也是 false。
中断一个线程
中断的意思是:不是让线程立即就停止,而是通知线程,你应该要停止了,是否真的停止,取决于线程这里具体的代码写法。
1、使用标志位来控制线程是否静止
2、使用Thread自带的标志位进行判定
interrupt会做两件事
1、把线程内部的标志为(boolean)给设置为true
2、如果线程在进行sleep,就会触发异常,把sleep唤醒
但是sleep在唤醒的时候,还会做一件事,把刚才设置的这个标志位在设置会false(清空了标志位)
等待一个线程
线程是一个随机调度的过程,等待线程,就是在控制两个线程的结束顺序。