进程与线程(一)(基本定义和demo)
线程和进程 进程定义 进程指正在运行的程序 确切的来说,当一个程序进入内存运行,即变成一个进程,进程是处于运行过程中的程序,并且具有一定独立功能。(比如电脑中运行的酷狗,qq等) 线程定义 线程是进程中的一个执行单元,负责当前进程中程序的执行,线程共享进程的资源。 线程与进程的关系 一个程序运行后至少有一个进程,一个进程中可以包含多个线程。 主线程 jvm启动后,必然有一个执行路径(线程)从main方法开始的,一直执行到main方法结束,这个线程在java中称之为主线程。 多线程定义 即就是一个程序中有多个线程在同时执行。多线程程序并不能提高程序的运行速度,但能够提高程序运行效率,让CPU的使用率更高。提到多线程就要提到两个概念:串行/并行 串行 单个线程执行多个任务。比如下载文件,第一个没下完不能开始下载第二个,属于不同时刻。缺点很明显,效率很低。 并行 多个线程执行多个任务。比如开启迅雷同时下载好几个文件,属于同一时刻。效率很高,但是要注意不要每个任务都建一个线程去处理,任务数量越多,内存压力越大,严重会导致宕机。 程序运行原理 分时调度 所有线程轮流使用CPU的使用权,平均分配每个线程占用CPU的时间。 抢占式调度 优先让优先级高的线程使用CPU,如果线程的优先级相同,那么会随机选择一个线程(线程随机性),java使用的为抢占式调度。 使用线程和不适用线程的区别