1.认识多线程

大家好,从今天开始,我想和大家分享 Java多线程系列教材。

接下来我们通过一个简单的例子来感受一下单线程和多线程的区别。

单线程

这是一个简单的单线程程序,它里面有三条输出语句,分别输出的是123,这个程序它的执行结果永远都是123。因为单线程程序它的执行顺序是顺序执行的,也就是说自上而下一条一条依据依次执行的。

package com.chenjie.executor.day01;

public class Main {
    public static void main(String[] args) {
        System.out.println(1);
        System.out.println(2);
        System.out.println(3);
    }
}

 打印结果

 

1
2
3

 

那么下面我们把这个单线程程序用多线程来改造一下,也就是说让它变成一个多线程程序。

多线程

那么我们把三条输出语句分别放入三个不同的线程当中,然后再启动这三个线程。

package com.chenjie.executor.day01;

public class Main1 {
    public static void main(String[] args) {
        Thread thread1 = new Thread() {
            @Override
            public void run() {
                System.out.println(1);
            }
        };
        Thread thread2 = new Thread() {
            @Override
            public void run() {
                System.out.println(2);
            }
        };
        Thread thread3 = new Thread() {
            @Override
            public void run() {
                System.out.println(3);
            }
        };
        thread1.start();
        thread2.start();
        thread3.start();
    }
}

 

我们再来看一下它的执行结果和之前的结结果有什么不同。

 

1
3
2

 

 

 

我们发现我们多线程程序执行的结果是有好几种不同的结果,比如说132、231,123等等情况

这就说明我们多线程的执行顺序不是顺序执行的,而是并行执行的。

那么顺序执行,它的顺序在一开始的时候已经决定好了,就像这个123一样,那么它的执行顺序也就是123。 

 

而我们的并行执行它的顺序一开始是同时执行的,所以说最终的结果是不确定的。

那么他的执行顺序取决于什么?取决于哪个线程优先获得CPU的执行权,谁先获得了 CPU的执行权,谁就优先被执行。

对比

我们再来看一下,对比一下单线程程序和多线程程序。

 

我们发现多线程程序里面频繁出现了一个关键字,这个关键字叫做thread。那么中文翻译过来就是线程,什么是线程呢?

我们可以先看一下现成的基本概念是什么? 

线程是进程的最基本执行单位,是CPU调度的最小单位,

我们这句话我们要结合我们一个比喻来看

如果说我们把进程比作成一个工厂,那么线程就是这个工厂中的一个机器工人,机器工人工作的时候需要电,他没电他就不工作,

那电从何来,电从电池里面来,CPU就相当于一个电池,就好比电池它可以给机器工人供电,那么CPU的核心数就好比就是这个电池上面有几个插口,而充电线就是连接电池和机器人功能的。

那么我们再来结合线程的概念来说的话,一个工厂他想要运行,它里面至少需要一个机器工人,而机器工人他想要工作他就需要电。 

所以说它就需要CPU给它供电统领一个进程,它里面至少需要一个线程,而线程的运行它离不开CPU。

那么平时我们所说的单线程单线程就好比就是一个工厂配一个工人,统领我们的单号CPU也是一样的,就好比一个电池配合充电线,

单进程多线程的话,就是一个工厂里面有多名工人,然后多核CPU的话就是一个电池配多个充电线,那么这也就意味着可以给多名工人同时充电,这个多名工人可以同时工作,那么这也就是多线程的核心,对不对?

多线程的存在就是为了同步完成专项任务的,而是提高了资源的使用效率。

什么时候开始使用线程

那么说呢这么多,那么什么时候开始使用线程,那么在同一时间需要完成多项任务的时候,我们就可以使用到线程。比如说我们同时下载多张照片,同时上传多个文件,等等都是需要使用到线程。

 总结

最后我们来总结一下今天内容,今天我们主要说了两点

第一点我们说了线程的基本概念,也就是说线程是进程的基本执行单位,也就是说线程是进程中做事的那一个。

然后第二点就是我们说的什么时候需要线程,我们在同一时间需要完成多项任务的时候,这个时候我们就需要使用到线程。 

 

posted @ 2022-04-01 13:20  小陈子博客  阅读(75)  评论(0)    收藏  举报