与进程不同的是同类的多个线程共享进程的堆和方法区资源,但每个线程有自己的程序计数器、虚拟机栈和本地方法栈
线程是进程划分成的更小的运行单位。线程和进程最大的不同在于基本上各进程是独立的,而各线程则不一定,因为同一进程中的线程极有可能会相互影响。线程执行开销小,但不利于资源的管理和保护;而进程正相反
字节码解释器通过改变程序计数器来依次读取指令,从而实现代码的流程控制,如:顺序执行、选择、循环、异常处理。
在多线程的情况下,程序计数器用于记录当前线程执行的位置,从而当线程被切换回来的时候能够知道该线程上次运行到哪儿了
程序计数器私有主要是为了线程切换后能恢复到正确的执行位置
著作权归所有 原文链接:https://javaguide.cn/java/concurrent/java-concurrent-questions-01.html
- 说一说自己对于 synchronized 关键字的了解
- 如何使用 synchronized 关键字?
- 构造方法可以使用 synchronized 关键字修饰么?
- 讲一下 synchronized 关键字的底层原理
- JDK1.6 之后的 synchronized 关键字底层做了哪些优化?
- synchronized 和 volatile 的区别?
- synchronized 和 ReentrantLock 的区别
著作权归所有 原文链接:https://javaguide.cn/java/concurrent/java-concurrent-questions-02.html
- 为什么要用线程池?
- 实现 Runnable 接口和 Callable 接口的区别
- 执行 execute()方法和 submit()方法的区别是什么呢?
- 如何创建线程池
- ThreadPoolExecutor 类分析
- 一个简单的线程池 Demo
- 线程池原理分析
著作权归所有 原文链接:https://javaguide.cn/java/concurrent/java-concurrent-questions-03.html