1、进程与线程概念
进程是资源分配的基本单位,线程是资源调度的基本单位。
2、从JVM角度看线程:
线程私有的内存空间:程序计数器、本地方法栈、虚拟机栈
程序计数器:线程不是总被执行的,与CPU的调度算法相关,当线程被中断后,需要记录执行的位置,当恢复执行时,自动按记录的位置执行。
本地方法栈、虚拟机栈:防止其他线程访问自己的数据。
3、并发与并行的区别
并发:同一时间段内,多个任务都在执行
并行:同一时刻,多个任务都在执行
线程共有的内存空间:堆和方法区(JDK1.7及以前版本),JDK1.8及以后方法区被元数据空间替代
4、线程的生命周期
5、使用多线程可能会带来的问题?
内存泄漏、上下文切换、死锁等
6、多线程死锁?
6.1、 java中死锁经典案例,来自编程之美
package com.smart.thread.demo1;
/**
* 死锁
*
* @author : cuantianhou 2019/8/29
*/
public class DeadLockMain {
private static Object resource1 = new Object();
private static Object resource2 = new Object();
public static void main(String[] args){
new Thread(()->{
synchronized (resource1){