线程学习之线程初识

线程学习之线程初识

一、程序、进程、线程的介绍

程序:

​ 程序是一组静态的数据或者代码。

进程:

​ 进程是程序执行的一次过程(运行中的程序),是计算机系统运行的基本单位,是动态的。例如我们平时使用电脑打开一个腾讯课堂软件,这就是一个进程。

线程:

​ 线程与进程类似,但是线程是一个比进程更小的单位。一个进程在运行的过程中会产生多个线程。一个进程至少包含一个线程。一个进程之间的多个线程共享进程的 方法区资源,但每个线程拥有自己的虚拟机栈、本地方法栈、程序计数器,多个线程之间可以自由切换,但是对系统的开销要比进程小,所以线程也叫轻量级进程。

运行时数据区域图如下(图来源于网络)
在这里插入图片描述

二、进程和线程的区别

​ 1. 一个进程可以包含多个线程(至少包含一个线程),一个进程的多个线程共享进程的 方法区资源,但是拥有自己的虚拟机栈、本地方法栈、程序计数器

2. 线程是进程中划分的更小的单位。各个进程之间是相互独立的,但是各个线程之间则不一定,一个进程中的多个线程之间极有可能相互影响。
3. 进程之间的进行切换的开销大,线程之间进行切换的开销比进程小。

三、创建线程的方式

方式一:继承Thread类
  1. 自己定义一个线程类

  2. 继承父类Thread

  3. 重写run()方法

  4. new一个线程对象,调用start()方法,让线程进入就绪状态

方式二:实现Runnable接口
  1. 自己定义一个线程类

  2. 实现Runnable接口

  3. 重写run()方法

  4. new一个线程对象,创建一个Thread对象将我们new出的对象包装起来,然后调用start()方法,让线程进入就绪状态

    注:Thread类实现了Runnable接口,start()方法在Thread类中,所以在用Runnable接口创建线程的时候,需要先将实现Runnable接口的线程类构建为Thread类,再调用start()方法。

实现Runnable接口与继承Thread类相比的优势
  1. 通过创建任务,然后给线程分配的方式来实现多线程,更适合多个线程同时执行相同任务的情况;

  2. 可以避免单继承所带来的的局限性;

  3. 任务与线程本身是分离的,提高了程序的健壮性;

  4. 线程池技术接受Runnable接口实现的线程,不接受Thread类型的线程

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值