thread|牛批!终于有大牛把Java线程知识点讲解的如此透彻,收藏一波





Hello , 今天给各位童鞋们分享的是Java线程 , 赶紧拿出小本子记下来吧
认识线程(Thread)概念
- 线程属于进程的组成(每个进程中至少有一个线程(主线程) , 也可以有多个线程)
- 线程是os进行调度的最小单位 。
- 进程是系统分配资源(包括CPU)的最小单位 , 线程是系统调度(CPU分配)的最小单位
原有的执行流(调度单位)因为某些事件堵塞了 , 同时我们还需要运行一些其他的代码时
需要一些调度单位加速我们的代码运行速度
创建Java线程Thread的几个常见属性
如何创建Java线程
- Thread类——每个Thread对象都是代表一个线程
- Runnable接口——每个Runnable对象都是一个任务
例子:
- 线程继承自Thread类 , 并且重写Run方法 。
- 实现Runnable接口 , 重写其Run方法 , 实例化一个Runnable对象 , 构造Thread对象时 , 将Runnable对象传入 。
Thread对象也可以当做Runnable对象使用
多线程的现象具有随机性 , 随机性的来源——调度机制
start() vs run()
重写run方法 , 是提供线程需要做的事情 , 调用start是真正独立执行 。 启动线程需要调用start方法
Thread类常见的构造方法:
线程中断绝大多数我们的线程代码 , 是跑在一个死循环中的
1、通过一些共享数据让其停止
2、Thread类提供了方法 , 使得其停止
可以认为 , 每个Thread对象中 , 都有一个类似变量让其停止 。
调用方法
其他线程可以调用 . interrupt();
【thread|牛批!终于有大牛把Java线程知识点讲解的如此透彻,收藏一波】在需要停止的线程内部 , 通过调用 boolean Thread.interrupted();
在其内部可能有两种状态:
1、调用类似的sleep方法 , 处于阻塞状态 , 会收一个InterruptedException异常 , 表示需要其停止 。
2、处于就绪状态 , 正在执行代码 ,
Thread.interrupted()返回true , 表示需要其停止
只能建议停止 , 不能强制停止
Thread.interrupted()读取一次后便会清除其中断标志
使用 .isInterrupted()在判断指定线程的中断标志设置不清除中断标志 。
等待一个线程有时候 , 我们需要等待一个线程完成它的工作后 , 才能进行下一步工作 , 例如:甲线程等待乙线程结束 。
使用 . join();
例如:
线程的状态理论上的线程状态分为:初识、就绪、运行和停止
实际上在Java中分为:NEW、RUNNABLE、TERMINATED、BLOCKED、WAITING、TIMED_WAITING
Thread.isXXX()
alive:哪些状态是alive的?
RUNNABLE、TERMINATED、BLOCKED、WAITING、TIMED_WAITING
- iqoo|iQOO Z6x终于量产,6000mAh大电池、天玑8100+独显齐上阵
- 微信更新正式版!“清理缓存”功能变强,小程序终于能分享到朋友圈
- 拼多多|拼多多网页版终于上线,最大短板补足了吗?
- 微信|终于!微信可以分组了!
- 苹果|128GB版iPhone跌至3799元,观望者终于等到了,机会很少有
- iOS|iPhone6s升级iOS15.6b3各方面优化太满意了,老机型终于能养老了
- 今天|安卓之光终于来了 曝小米12 Ultra下周预热
- 芯片|华为新机终于官宣:7月4日,正式发布
- 华为|华为终于官宣,Nova10系列只是前汤,mate50 Pro才是大餐
- Java|我做公众号终于不亏钱了
