Java util concurrent 是Java工具包,用于并发编程的。
1. jdk8 文档
2. 进程/线程是什么?
- 进程:
进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。是一个程序。
- 线程:
通常在一个进程中可以包含若干个线程,当然一个进程中至少有一个线程,不然没有存在的意义。线程可以利用进程所拥有的资源,在引入线程的操作系统中,通常都是把进程作为分配资源的基本单位,而把线程作为独立运行和独立调度的基本单位,由于线程比进程更小,基本上不拥有系统资源,故对它的调度所付出的开销就会小得多,能更高效的提高系统多个程序间并发执行的程度。由cpu调度的多个任务。
- 线程举列:
1、 QQ聊天,一边和某个人视频,一边和另外一个人发送消息。
2、 网易云播放音乐,一边听歌,一边刷评论。
- 线程状态
public enum State {NEW, // 线程创建RUNNABLE, // 线程启动BLOCKED, // 线程阻塞WAITING, // 线程等待正在等待TIMED_WAITING, // 设置了等待时间, 等待其它线程完成TERMINATED; // 线程挂掉}
- wait/sleep区别
功能都是当前线程暂停,有什么区别?
wait放开手去睡,放开手里的锁
sleep握紧手去睡,醒了手里还有锁
- 并发和并行
并发:同一个时刻,多个线程访问同一个资源。会造成数据混乱,死锁。并行:多项工作一起执行,之后再汇总。
3. Synchronized关键字
jvm自带的线程锁。
线程操作资源类(高内聚,低耦合),资源类要使用同步代码块包裹业务方法。
代码传送带