Java多线程的几个基本概念

    技术2022-07-10  95

    并发与并行

    并发:指两个或多个事件在同一时段内发生 交替执行

    并行:指两个或多个事件在同一时刻发生(同时发生) 同时执行

    进程与线程

    进程:进入内存的程序加进程 所有的应用程序都需要进入到内存中执行,临时存储RAM中 线程:点击应用(如电脑管家)的功能(病毒查杀、清理垃圾、电脑加速)执行就会开启一条应用程序到cpu的执行路径,CPU就可以通过这个路径执行功能,这个路径名字就叫线程。

    线程属于进程,是进程中的一个执行单元,负责程序的执行。

    单核心单线程CPU CPU在多个线程之间做高速切换,轮流执行多个线程,效率低,切换速度(1/n毫秒) 多线程好处: 1.效率高 2.多个线程之间互不影响

    线程调度

    分时调度 所有线程轮流使用CPU的使用权,平均分配每个线程占用CPU的时间。

    抢占式调度 优先让优先级高的程序使用CPU,如果线程的优先级相同,那么会随机选择一个(线程随机性)。Java使用的为抢占式调度

    设置线程的优先级

    主线程

    主线程:执行主(main)方法的线程

    单线程程序:java程序中只有一个线程 执行从main方法开始,从上到下依次执行

    JVM执行main方法,main方法会进入到栈内存 JVM会找操作系统开辟一条main方法通向cpu的执行路径 cpu就可以通过这个路径来执行main方法 而这个路径有一个名字,叫main(主)线程

    package com.Thread; /* 主线程:执行主(main)方法的线程 单线程程序:java程序中只有一个线程 执行从main方法开始,从上到下依次执行 JVM执行main方法,main方法会进入到栈内存 JVM会找操作系统开辟一条main方法通向cpu的执行路径 cpu就可以通过这个路径来执行main方法 而这个路径有一个名字,叫main(主)线程 */ public class Demo01MainThread { public static void main(String[] args) { Person p1 = new Person("小强"); p1.run(); System.out.println(0/0); //in thread "main" java.lang.ArithmeticException: Person p2 = new Person("旺财"); p2.run(); } }

    package com.Thread; public class Person { private String name; public void run(){ //定义循环,执行20次 for (int i = 0;i<20;i++){ System.out.println(name+"--->"+i); } } public Person(String name) { this.name = name; } public Person() { } public String getName() { return name; } public void setName(String name) { this.name = name; } }
    Processed: 0.014, SQL: 9