JUC之基础入门篇
为什么多线程极其重要
- 摩尔定律失效
- 在主频不再提高且核数在不断增加的情况下,要想让程序更快就要用到并行或并发编程
- 高并发系统,异步 + 回调等生产需求
多线程相关概念
进程
- 是程序的⼀次执行,是系统进行资源分配和调度的独⽴单位,每⼀个进程都有它自己的内存空间和系统资源
线程
- 在同⼀个进程内又可以执行多个任务,而这每⼀个任务我们就可以看做是⼀个线程
管程
- Monitor 其实是一种同步机制,他的义务是保证(同一时间)只有一个线程可以访问被保护的数据和代码
- JVM中同步是基于进入和退出监视器对象 (Monitor,管程对象) 来实现的,每个对象实例都会有一个Monitor对象
- Monitor对象会和 Java 对象一同创建并销毁,它底层是由C++语言来实现的
用户线程和守护线程
- 守护线程是一种特殊的线程,在后台默默地完成一些系统性的服务,比如垃圾回收线程
- 用户线程是系统的工作线程,它会完成这个程序需要完成的业务操作
- 当程序中所有用户线程执行完毕之后,不管守护线程是否结束,系统都会自动退出
- 设置守护线程,需要在 start() 方法之前进行