0
点赞
收藏
分享

微信扫一扫

浅学 “ Java多线程 ”

梯梯笔记 2022-04-14 阅读 80
java

我们之前学习的程序在没有跳转语句时,从上到下依次执行,那么我们现在需要设计一个程序,可以一边打游戏,一边听歌,如何实现?

要解决上述问题,我们需要使用多进程或者多线程来解决

并发与并行

并发:指两个或多个事件在同一时间段内发生

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

线程与进程

进程 是指一个内存中运行的应用程序,每个进程都有一个独立的内存空间,一个应用程序可以同时运行多个进程;进程也是程序的一次执行过程,是系统运行程序的基本单位;是资源分配的基本单位;系统运行一个程序,即是一个进程从创建、运行到消亡的过程

线程 是进程中的一个执行单位,是独立调度的基本单位,负责当前进程中程序的执行,一个进程中至少有一个线程

一个进程中是可以有多个线程的,这个应用程序也可以称之为多线程程序

一个程序运行后至少有一个进程,一个进程可以包含多个进程

线程调度

分时调度

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

抢占式调度

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

主线程

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

 public static void main(String[] args){
     person p1=new person("张三");
     p1.run();
     person p2=new person("李四");
     p2.run();
 }
public class person {
    private String name;

    public void run(){
        for(int i=0;i<10;i++)
            System.out.println(name+"--->"+i);
    }
    public person(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

创建多线程程序的第一种方式

Java使用Java.lang.Thread类代表线程,所有的线程对象都必须是Thread类或者子类的实例,每个线程的作用是完成一定的任务,实际上就是执行一段程序流即一段顺序执行的代码。Java使用线程执行提来代表这段程序流。Java通过继承Thread类来创建并启动多线程的步骤

public static void main(String[] args){
        //创建Thread类的子类对象
        MyThread mt=new MyThread();
        //调用Thread类中的方法start方法,开启新的线程,执行run方法
        //void start() 结果是两个线程并发的运行
        mt.start();
        for(int i=0;i<10;i++)
            System.out.println("main:"+i);

    }
    public class MyThread extends Thread {
    @Override
    public void run(){
        for(int i=0;i<10;i++)
            System.out.println("run:"+i);
    }
}

根据输出结果,我们可以知道多线程是随机性打印结果

举报

相关推荐

0 条评论