Java 多线程(01)—— 认识线程和创建线程

运行一个 Java 程序就是跑一个 Java 进程,该进程至少有一个线程即主线程,而 main 方法就是主线程的入口;

一、常见多线程名词解释

并发:一个 CPU 核心上,通过快速轮转调度的方式,执行多个进程,微观上 "有先有后";

并行:两个进程同时分别在两个 CPU 核心上执行,微观上 "同时进行";

进程:进程是资源分配的最小单位;

线程:⼀个线程就是⼀个 "执⾏流",每个线程之间都可以按照顺序执行自己的代码,线程是调度执行的最小单位;

终止线程:想要终止线程本质就是让 run 方法执行结束;

线程等待:让一个线程等待另一个线程执行结束,再继续执行;

线程安全:让多个线程同时执行同样的代码,出现的 bug;

进程和线程的区别:

1. 进程包含线程,一个进程可以有一个或者多个线程;

2. 进程和线程都是实现并发编程的,但线程更轻量,更高效;

3. 同一个进程的线程之间,共用同一份资源,如内存,硬盘等,即线程省去了申请资源的开销; 

4. 进程之间是有独立性的,一个进程的崩溃不会影响其他进程;同一个进程内的线程之间可能会相互影响(存在线程安全,线程异常等问题);

5. 进程是分配资源的最小单位,线程是调度执行的最小单位;

6. 进程之间的通信比较复杂,需要使用管道,消息队列等机制,线程间通信比较简单,因为它们共享进程的地址空间,可以直接读写共享数据;

二、创建线程的几种方式

1. 继承 Thread(java.long包下) 类,重写 run 方法

5324274d6ae3431fb32a96c88158df5f.png

(可通过单独定义一个类,或者使用匿名内部类),单独创建一个类不常用;

    public static void main(String[] args) {
        Thread t1 = new Thread(){
            @Override
            public void run() {
                System.out.println("通过匿名内部类创建线程");;
            }
        };
        t1.start();
    }

Thread 类:是 JVM 用来管理线程的⼀个类,每个线程都有⼀个唯⼀的 Thread 对象与之关联;

Thread 类中的 run 方法 是对 Runnable 的重写,run 方法描述了线程的入口,每个线程都是一个独立的执行流,一个线程从入口方法开始执行,即 run 方法,run 方法执行完毕,线程就会结束;

start 方法 用于开启线程,负责调用系统 API,系统创建线程,再调用 run 方法执行线程 ;直接调用 run 方法是不会创建线程的

常用构造方法如下:

88d950c34e464c78afd132aa84355daf.png

常用其他方法如下:

55cd57c5bdc84b228641e83c81b350a8.png

2. 实现 Runnable(java.long包下) 接口,重写 run 方法;

4d4747fd8f7048d993c5f2aa627ffb24.png

 可通过单独创建一个类,或者匿名内部类,或者 lambda 表达式实现,后两者更为常用;

    public static void main(String[] args) {
        Thread t1 = new Thread(new R
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Rcnhtin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值