并发编程艺术-4

本文主要介绍的Java 并发编程的基础知识, 其中包括了:线程是什么? 为什么需要多线程? 线程的状态和相关操作。

什么是线程:操作系统在运行程序时,会为其创建出一个进程,现代操作系统最小的调度单位是线程,每一个线程都有自己的堆栈,程序计数器,局部变量,可以访问共享内存。

为什么要使用多线程 :

(1) 多处理器

(2) 更快的响应时间

(3) 更好的编程模型

线程的状态 :

New: 创建线程,为其分配空间,等待CPU 分配时间片运行,这时候不一定加载到内存中,有可能被溢出到磁盘上面,还没调用 start.

Runnable:得到CPU时间片,开始运行

Sleep:释放CPU使用权,一段时间后继续运行,不释放锁

Wait:释放CPU使用权,需要notify/notifyall 唤醒,不然一直处于等待状态

Sleep(time) :释放CPU使用权,一段时间后继续运行,不释放锁

Wait(time), 会释放锁,进入等待。

Blocked:没有获得锁,阻塞.

Terminal:run 方法结束。

中断:是线程的一个标识位属性,就好像是其他线程通过调用interrupt() 进行告知线程消息,而线程通过检测自身的中断标识位来判断是否有线程中断自己,Thread 类里面的很多方法通过抛出interruptException,清除中断标识位。

  • @throws InterruptedException

  • if any thread has interrupted the current thread. The

  • <i>interrupted status</i> of the current thread is

  • cleared when this exception is thrown.

*/

这边有个tip : 每一个线程的结束的时候都会调用自身的notifyAll, 这个在JDK 源码中实现了。

最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容