进程(Process)线程(Thread)
程序:指令和数据的有序集合。
进程:执行程序的一次执行过程,是系统资源分配的单位。
线程:一个进程可以包含多个线程,至少有一个线程(main主线程),线程是CPU调度和执行的单位。
概念表述:
- 线程是独立的执行路径。
- 程序执行时,及时没有自己创建线程,后台也会有多个线程,如mian主线程、gc线程(垃圾清理)。
- mian() 称为主线程,是系统的入口,由于执行整个程序。
- 进程中有多个线程时,线程的运行由调度器(cpu)安排调度。
- 对同一份资源操作时,会存在资源抢夺的问题,需要加入并发控制。
- 线程带来的问题:cpu调度时间,并发控制开销。
- 每个线程在自己的工作内存交互,内存控制不当会造成数据的不一致。
线程的创建
- 继承Thread:
// 创建线程方法1 : 继承Thread类 ,重写run() 方法 , 调用start 开启线程 // 线程开启之后不一定立即执行,有cup进行调度 public class testThread1 extends Thread{ @Override public void run() { // 重写run()方法 for (int i = 0; i < 5; i++) { System.out.println("其他----"+i); } } public static void main(String[] args) { // main线程为主线程 // 创建线程对象 testThread1 testThread1 = new testThread1(); // run() 和 start() 方法开起线程: // testThread1.run(); testThread1.start(); for (int i = 0; i < 5; i++) { System.out.println("main主线程----"+i); } } } /* run()方法: 其他----0 其他----1 其他----2 其他----3 其他----4 main主线程----0 main主线程----1 main主线程----2 main主线程----3 main主线程----4 start() 方法: 其他----0 main主线程----0 其他----1 main主线程----1 其他----2 main主线程----2 其他----3 main主线程----3 其他----4 main主线程----4 */