【多线程】一、多线程快速入门

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_43227967/article/details/90437243

目录

一、进程与线程的区别

二、为什么要使用多线程?

三、常见创建线程的方式

3.1、继承Thread类

3.2、实现Runnable接口

3.3、匿名内部类

3.4、匿名内部类(Lambda创建)

四、启动线程方式以及优先级


多线程相信大家可能有一定的认知与了解,比方说百度云下小视频,或者迅雷下种子,一次性能开启多个任务,这就是一个典型的多线程。

一、进程与线程的区别

比如电脑运行应用程序的例子,打开QQ,这就是一个进程,我们在任务管理器(按Ctrl+Alt+.)进入点击任务管理器。可以看到,如图,总而言之:进程是所有线程的集合,每一个线程是进程中的一条执行路径。

二、为什么要使用多线程?

举个例子:这个时候有个小姐姐要去楼下拿快递,但是她有20个快递要拿,假设一次拿五个快递,她就需要拿四次,但是这时小何出现了,和小姐姐一起去拿快递,这时就只需要两次即可完成!如图:

从中我们得出了一个结论:小何是个直男,不会陪小姐姐一起休息照顾她。当然不是这样。多线程之间互不干涉,互不影

响,即便是线程A挂掉,线程B也会继续运行,这就是为什么需要使用多线程。那么常见的应用场景当然就是群发短信了,比如

公司要给十万用户发短信,不可能一个线程一次一次的发送,这样效率太慢了,这次就需要用到多线程去处理!来提高效率!

三、常见创建线程的方式

这是一道面试时常见的问题。我们一般会说有两种,其实是有三种,当然四种也行,严格意义上来说只有三种。那么为什

么小何说能有四种呢?请听小何一一道来!

3.1、继承Thread类

当然继承类使用的比较少,原因相信大家都知道,类只能继承一个,接口可以实现多个。

class AThread extends Thread {
    public void run() { System.out.println("Hello Word? No!IS Hello Thread!!!"); }
}
public class A {
    public static void main(String[] args) { new AThread().start(); }
}

打印结果为: 

3.2、实现Runnable接口

 实现接口是常用的,对比继承Thread,优势多在还能继承一个类。

当然实现接口是没有start方法的,只能直接调用run方法,那么就不是一个新的线程了,所以我们在这里new出一个线程把

BThread放入然后再调用线程的start方法。

注意:启动一个线程 是调用start方法 不是run方法。 调用run方法相当于主线程执行。

class BThread implements Runnable {
    public void run() { System.out.println("Hello Word? No!IS Hello BThread!!!"); }
}
public class B {
    public static void main(String[] args) {
        Thread thread = new Thread(new BThread());
        thread.start();
    }
}

打印结果为:

3.3、匿名内部类

匿名内部类相信有经验的开发者应该知道,这个在一些项目模式中不会常用,依项目类型与需求而定。

//使用匿名内部类方式创建线程
Thread thread = new Thread(new Runnable() {
    @Override
    public void run() {
        System.out.println("HI");
    }
});
thread.start();

当然也可以直接在创建后start,不建立Thread对象

3.4、匿名内部类(Lambda创建)

第四种其实只是基于第三种的优化,使用了Lambda而已,注意该种方式只存在于JDK1.8或以上:

//JDK1.8之后 Lambda创建
new Thread(() -> {
    System.out.println("A");
}).start();

四、启动线程方式以及优先级

Start方法代表启动一个线程,run方法相当于调用,而不是启动线程。 main方法与线程方法同时运行,main会优先运行,因为是主线程。

猜你喜欢

转载自blog.csdn.net/qq_43227967/article/details/90437243