1. Java中的多线程
多线程是Java的一个重要特性,多线程支持Java程序能够同时运行多个任务,多线程的目的是提高程序运行的效率,因为大型应用程序都需要高效完成大量任务。
2. Java中的进程与线程
1) Java中的进程:
(1)进程的定义:在操作系统中正在运行的程序。
(2)进程的特点:
①动态性(基本特点)
②并发性(重要特点)
③异步性(进程按各自独立运行的、不可预知的速度向前推进)
④独立性(进程是一个能独立运行、独立获得资源和独立接受调度的基本单位)
⑤ 结构特性(程序段、数据段、进程控制块)
2)Java中的线程:
(1)线程的定义:轻量级进程。
(2)线程的特点:
①轻型实体(线程一般不拥有系统资源,只有保障其能够独立运行的必不可少的资源)
②独立调度(线程是独立运行的,每个线程不知道是否还有其他线程的存在)
③抢占式执行(当前执行的线程随时都有可能被挂起,以便运行下一个线程)
④可并发执行(一个进程中的多个线程是可以并发执行的)
⑤共享进程资源(同一个进程中的所有线程都是可以共享进程的资源)
3.Java中的进程与线程之间的关系与区别
1)关系:线程是进程的组成部分,一个进程可以拥有多个线程,但一个线程必须拥有一个父进程。
2)区别:
(1)进程有独立代码、数据空间,进程切换开销大;
线程有独立运行栈、程序计数器,线程切换开销小;
(2)多进程:一个操作系统能够同时运行多个程序或任务;
多线程:一个程序能够同时运行多个任务或顺序流。
4.Java中的线程中的异常处理策略
比如我们去迪斯尼乐园,进了迪斯尼乐园后发现有5个检票口,但由于目前客流不是太多,暂时只开放3个窗口,这时“核心线程”就是开放的3个窗口,“核心线程数”就是3,“最大线程数”是5。后来客流越来越大,又开放了剩余的2个窗口,这下子5个窗口全部开放了,但是客流太多了以至于5个窗口都造成了拥挤和排长队。然后,迪斯尼就关闭了大门,不准后进大门的游客再进入检票口。
5.Java中的线程存活时间
线程存活时间:允许检票员休息的最长时间,为了防止检票员偷懒。
6.Java中使用线程池的好处?
有时系统需要处理非常多的运行时间短的请求,如果每一个请求都需要开启一个新线程,那么系统就需要不断地创建和销毁线程,有时花在创建和销毁线程上的时间比真正允许线程的时间还久。此外,当线程数据庞大时,系统可能崩溃。
故此,使用线程池的好处不言而喻了。
1)减少创建和销毁线程的性能开销(因为线程池中的线程可以重复使用,类似洗碗池里的陶瓷碗)
2)方便对线程进行管理和维护(比如定时开启、定时终止、周期执行、并发控制等)
7.JMM模型
Java线程内存模型与CPU缓存模型很像,可以说Java线程内存模型是基于CPU缓存模型建立的,同时Java线程内存模型是标准化的。