多线程的学习01

什么是线程

线程是为了解决并发编程引入的机制,线程相比进程来说更轻量。

创建线程比创建进程——开销更小

销毁线程比销毁进程——开销更小

调度线程比调度进程——开销更小

进程包含线程,同一进程里的若干线程之间,共享着内存资源和文件描述符表

每个线程被独立调度执行,每个线程都有自己的状态/优先级/上下文/记账信息

进程是操作系统资源分配的基本单位

线程是操作系统调度执行的基本单位 

Thread常见的构造方法

Thread()                创建线程对象

Thread(Runnable target)                            使用Runnable对象创建线程对象

Thread(String name)                                  创建线程对象,并命名

Thread(Runnable target,String name)        使用Runnable对象创建线程对象,并命名多线程的学习01_第1张图片

把t设置为守护进程/后台进程。此时进程的结束与否和 t 无关了。

在真正调用start之前,调用t.isAlive就是false.调用start之后,isAlive就是true

isAlive是在判断,当前系统里面的这个线程是不是针对有了。

另外,如果内核里线程把run干完了,此时线程销毁。pcb随之释放。但是Thread t 这个对象还不一定被释放,此时 isAlive 也是 false。

多线程的学习01_第2张图片

 中断一个线程

中断的意思是:不是让线程立即就停止,而是通知线程,你应该要停止了,是否真的停止,取决于线程这里具体的代码写法。

1、使用标志位来控制线程是否静止多线程的学习01_第3张图片

2、使用Thread自带的标志位进行判定

 多线程的学习01_第4张图片多线程的学习01_第5张图片

interrupt会做两件事

1、把线程内部的标志为(boolean)给设置为true

2、如果线程在进行sleep,就会触发异常,把sleep唤醒

但是sleep在唤醒的时候,还会做一件事,把刚才设置的这个标志位在设置会false(清空了标志位) 

等待一个线程

线程是一个随机调度的过程,等待线程,就是在控制两个线程的结束顺序。

多线程的学习01_第6张图片

你可能感兴趣的:(学习,java,开发语言)