为什么学习并用好多线程极其重要!
硬件方面:
- 摩尔定律失效了,CPU主频不再翻倍,而是采用多核而不是更快的主频
软件方面:
- 充分利用多核处理器
- 提高程序性能,高并发系统
- 提高程序吞吐量,异步+回调等生产需求
弊端及问题:
- 线程安全问题
- 线程锁问题
- 线程性能问题
JAVA线程的启动底层源码主要是
private native void start0()
开始,本身底层就是C++语言,实质就是JVM配合操作系统,由操作系统分配了一个原生线程
。
Java多线程相关概念:
- 一把锁
- synchronized
- 两个并
- 并发
- 并行
- 三个程
- 进程
- 线程
- 管程:Monitor(监视器),也就是平时所说的锁
用户线程:
一般情况下不做特别说明配置,默认都是用户线程
。是系统的工作线程,它会完成这个程序需要完成的业务操作。
守护线程:
是一种特殊的线程为其他线程服务的,在后台默默地完成一些系统性地服务。比如垃圾回收。当系统只剩守护线程地时候,java虚拟机会自动退出
。