我爱编程JAVA 高级

并发编程艺术-4

2018-04-15  本文已影响0人  e86dab508bc1

本文主要介绍的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,清除中断标识位。

*/

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

上一篇下一篇

猜你喜欢

热点阅读