多线程基础之走进Java世界中的多线程

一.进程,线程与任务

进程就是一个程序运行的实例,例如:一个运行的Eclipse就是一个进程.进程与程序的关系就像是播放中的Mp4视频与相应的视频文件的关系,一个动态一个静态.一个java程序实质就是启用一个java虚拟机进程,也就是运行一个java程序就是一个Java虚拟机进程.在这里插入图片描述进程是程序向操作系统申请资源(内存空间等)的基本单位,而线程又是进程中可以独立执行的最小单位.一个进程可以包含多个线程,这些线程共享进程的资源(内存空间,文件句柄).线程所完成的计算等操作被称为任务.

二.多线程编程简介

什么是多线程编程?(概念问题不多数直接上图) 在这里插入图片描述

三.Java线程API简介

Java标准库类java.lang.Thread就是Java平台对线程的实现.Thread类或它的子类的一个实例就是一个线程.

  1. 线程的创建,启动与运行.
    每个线程都有其要执行的任务,这些业务逻辑在Thread的run()方法中直接实现或者调用,所以run()方法是线程任务处理逻辑的入口方法.run()方法由java虚拟机直接调用 而不应该在java程序里面自己调用.
    Thread常用的两个构造器是:Thread()和Thread(Runnable target)相应的对应了线程的两种创建方式.一种是定义Thread的子类再该子类中覆盖run()方法并实现相应的逻辑.另一种是上述第二种构造器创建一个java.lang.Runnable的实例实现相应的逻辑,然后再以Runnable接口的实例作为参数直接New一个Thread的实例.
    在这里插入图片描述在这里插入图片描述在这里插入图片描述这样做会导致直接调用run()的线程会运行在start()调用的线程之中,违背了多线程的初衷,并不会分开处理任务.

    两种创建方式的区别:
    1:从面向对象编程的角度来讲第一种创建方式是基于继承,第二种创建方式是以Runnable的实例作为参数直接new创建Thread实例的组合技术.组合相对于继承来讲耦合度更低,所以推荐使用第二种创建方式.
    2:从对象共享角度来讲第二种方式意味着多个线程可以共享同一个Runnable实例.
    3:从创建成本来讲java中的线程是一个特殊的Runnable实例,因为在创建它的时候java虚拟机会为其分配栈空间,内存线核的资源,因此创建一个线程实例比创建一个普通Runnable接口耗费更多的资源性能.所以我们直接创建Runnable接口的实例传递给其他对象使用(第二种方式)的话节约了很多资源提升了性能.

    1. 线程的属性.
      在这里插入图片描述在这里插入图片描述在这里插入图片描述

四.Java线程的层次关系

在这里插入图片描述在这里插入图片描述

五.线程的生命周期状态

![在这里插入图片描述](https://img-blog.csdnimg.cn/20190117172531175.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzM3NTg1MDk3,size_16,color_FFFFFF,t_在这里插入图片描述在这里插入图片描述

六.多线程运行的简单实例

在这里插入图片描述
在这里插入图片描述

七.多线程风险和优势在这里插入图片描述在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值