对进程、线程的简单理解以及java实现多线程

问:进程、线程的基本概念?
:进程、线程都是操作系统的一些基本概念。进程是指计算机中已运行的程序,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。线程是操作系统能够进行运算调度的最小单位,它被包涵在进程之中,是行程中的实际运作单位。
问:概念太抽象,能举个例子么??
:概念总是抽象的。不妨直接举个简单的例子,上图:
在这里插入图片描述
可以简单的认为电脑管家是一个进程,清理垃圾、扫描病毒、电脑加速等这些都是线程。
在这里插入图片描述
这些都是IE浏览器的线程,一个进程对应一个或多个线程。
问:每个线程都是平等地被cpu调度么?
:若系统使用分时调度 ,那么这些线程是平等的,被cpu轮流调度;若系统使用抢占式调度,则根据线程的优先级进行调度,优先级高的优先被调度。
问:我们知道java代码是从上到下依次执行的,但是如果想将main函数中的多个代码块同时执行,而不是从上到下依次执行,那应该怎么办呢?
:可以用Thread类实现,创建两个Thread的两个子类,将方法体写入两个子类的run()方法中,然后在main方法中调用两个字类的start()方法,那么两个子类的方法体就会同时执行。代码如下

public class MyThread1 extends Thread{
    @Override
    public void run() {
        for(int i=0;i<50;i++){
            System.out.println("线程1的"+i);
        }
    }

}
public class MyThread2 extends Thread{
    @Override
    public void run() {
        for(int i=0;i<50;i++){
            System.out.println("线程2的"+i);
        }
    }
}

public class test {
    public static void main(String[] args) {
        MyThread1 myThread1=new MyThread1();
        MyThread2 myThread2=new MyThread2();
        myThread1.start();
        myThread2.start();
    }
}

结果如下,可见两个方法体同时执行,无先后顺序。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_42425551/article/details/106983812