程序:指令集,静态的概念
进程:操作系统调动程序,是程序的一次动态执行过程,动态的概念
线程:在进程内的多条执行路径
Ps:单核的话进程都是虚拟模拟出来的,多核处理器才可以执行真正的多线程
单核通过CPU调度时间片实现虚拟模拟的多线程,比如执行main函数和GC在底层就是多线程,你执行你的,我执行我的
一个进程内部的线程共享相同的内存单元,可以访问相同的变量和对象,所以存在并发控制问题
线程和进程的区别:
1. 根本区别:进程是资源分配的单位,而线程是调度和执行的单位
2. 所处环境:多进程是指操作系统中可以有多个进程,多线程是同一个进程中有多个顺序流同时执行
3. 切换开销:每个进程拥有自己独立的代码和数据空间(进程上下文),进程切换开销大,同一个进程内的线程因为是共享的进程的共享数据,所以线程切换的开销很小
4. 分配内存:系统会为每个进程分配不同的内存区域,而却不会为线程分配,线程使用的是进程的资源
多线程的实现方法:
方法1:继承Thread类
Rabbit.java
package 多线程; /** * @author:yb * @version 创建时间:2018-12-24 下午4:14:16 类说明 */ /* * 模拟龟兔赛跑 * 1.创建多线程:继承Thread+重写run()线程体 * 2.使用线程:创建子类对象+对象调用start() */ public class Rabbit extends Thread { // 线程体 public void run() { for (int i = 1; i <= 100; i++) { System.out.println("兔子跑了" + i + "步"); } } } class Tortoise extends Thread { // 线程体 public void run() { for (int i = 1; i <= 100; i++) { System.out.println("乌龟跑了" + i + "步"); } } }