Java高并发和多线程系列 - 1. 线程基本概念

1. 什么是线程? 线程和进程的区别多线程

在了解线程的概念前,咱们应该先知道什么是进程?并发

进程是操做系统的基本概念之一, 它是正在执行的程序实例。函数

* 下面的一些进程的基本概念你能够了解下 操作系统

--------------------------------------------------------------------线程

操做系统逻辑上将一个进程分为如下几部分(段):设计

# 文本生命周期

  程序的指令队列

# 数据进程

  程序使用的静态变量内存

# 堆

  程序可从该区域动态分配额外内存

# 栈

  随函数调用和返回而增减的一片内存, 用于为局部变量和函数调用连接信息分配存储空间

--------------------------------------------------------------------


那么,什么是线程呢?

线程是程序执行的最小单位。

咱们能够把线程看作是轻量级的进程。

使用多线程而不是多进程去进行并发程序的设计,是由于线程间的切换和调度成本要远远小于进程。

 

2. 线程的生命周期和各个状态

NEW(新生)

线程刚被新建好以后,进入 NEW(新生)状态

这个时候线程还没开始执行

 

RUNNABLE(运行)

当线程的start()方法调用时, 才表示线程开始执行。

 

BLOCKED(阻塞)

若是线程在执行的过程当中遇到了synchronized同步块, 就会进入

BLOCKED(阻塞)状态, 这时线程会暂停执行,知道得到请求的锁。

 

WAITING / TIMED_WAITING

这两个状态都是线程进入等待状态

区别是: WAITING(无时间限制) / TIMED_WAITING(有时间限制)

wait()方法会让线程进入等待队列

notify()方法会在等待队列中将线程唤醒

join()方法让线程进入等待队列,等目标线程终止

 

TERMINATED(终止)

当线程执行完毕后,则进入TERMINATED(终止)状态

相关文章
相关标签/搜索