1_java_多线程基础
一. 必要的前置基础知识
- 基础概念
- 进程:操作系统分配内存资源的基本单位,可以理解为一个程序就行一个进程。
- 线程:线程通常依附于进程存在,一个进程中通常包括一个或者多个线程,线程属于cpu调度执行的基本单位
- 串行:程序必须逐行执行,上一行代码没有执行完成,不会执行下一行代码。
- 并行:需要硬件支持(cpu中的多个核心),真正意义上的同时执行,在同一个时刻执行不同代码。
- 并发:单核cpu在极短的时间内切换不同的线程执行代码,看似是同时执行,但是并不是在同一个时刻执行的。
- 创建线程的方式
- 线程中常见的方法
- Thread.sleep(); Thread.yield();Thread.currentThread();
- Thread.currentThread().getName();
- java中的线程的6种状态
- NEW:新建,线程对象创建之后没有调用start()方法。
- RUNNABLE:运行中,这里状态分为两种一个是就绪状态,尚未获取到cpu时间片段,等待cpu的调度执行,一个是运行中状态,已经获取到cpu的时间片,正在执行线程代码。
- BLOCKED:阻塞,只有在使用synchronizde的时候等待获取锁资源的时候会出现。
- WAITING:无限期等待,线程一直会被挂起,只会有手动调用唤醒方法才能继续执行。
- TIMED_WAITING:有限期等待,调用的时候一般会传入一个参数,到达指定时间之后会自动恢复执行
- TERMINATED:结束,包括正常或者异常结束线程都会是这个状态