1.什么是进程?
操作系统可以同时执行多个任务 每一个程序 ==> 一个进程
2.什么是线程?
进程是一个独立的程序,线程是进程的组成部分;
进程/程序是通过【系统分配】相关的执行资源;
进程中的线程是通过【进程分配】相关执行资源。
进程中任何一个【线程】都没有,【进程】有必要存在吗?
没有存在的必要 ====》程序/进程退出关闭
一个 Java 程序/【进程】,最少有几个【线程】?
最少两个
1. 主线程 【不等于 main 方法,main 方法只是形式之一】
2. JVM 的 GC 机制,垃圾回收机制。
3.什么是并发?
两个或两个以上的线程同一个时间段发生
高并发惯用的解决方式:
如:天猫双十一、 JD 618、中午学校餐厅、下课卫生间
1. 扩容;服务器加大、餐厅加窗口、卫生间扩建
2. 队列/排队:餐厅排号,服务器资源排队
4.线程的优缺点
优点:
1. 提升资源利用率;
2. 提高用户体验。
缺点:
1. 降低其他线程的执行概率;
2. 用户会感受到软件的卡顿问题;
3. 增加系统压力,资源压力;
4. 多线程情况下有可能会导致共享资源问题,线程冲突,线程安全,线程锁死。
线程在控制 ,优化,操作,尽量保证线程操作可以提升项目的整体优势。多线程,高并发,是目前国内项目的主流风格。
5.Java中实现线程的两种基本形式
方式一:
继承 Thread 类
Thread 类是 Java 中线程的基类,有一部分线操作相关方法。
重写 run 方法,run 方法内容是线程目标任务代码。
方式二:
遵从 Runnable 接口
Runnable 接口是一个函数式接口,有且只有一个要求实现的方法,run 方法。同时 Thread 类也是Runnable 接口的实现类。
实现 run 方法,明确当前线程对象执行的目标任务是什么。
线程执行为【抢占】执行