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

目录

一、进程与线程的区别

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

三、常见创建线程的方式

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会优先运行,因为是主线程。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值