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

一.进程,线程与任务

进程就是一个程序运行的实例,例如:一个运行的Eclipse就是一个进程.进程与程序的关系就像是播放中的Mp4视频与相应的视频文件的关系,一个动态一个静态.一个java程序实质就是启用一个java虚拟机进程,也就是运行一个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的实例.
    多线程基础之走进Java世界中的多线程多线程基础之走进Java世界中的多线程多线程基础之走进Java世界中的多线程这样做会导致直接调用run()的线程会运行在start()调用的线程之中,违背了多线程的初衷,并不会分开处理任务.

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

    1. 线程的属性.
      多线程基础之走进Java世界中的多线程多线程基础之走进Java世界中的多线程多线程基础之走进Java世界中的多线程

四.Java线程的层次关系

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

五.线程的生命周期状态

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

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

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

七.多线程风险和优势多线程基础之走进Java世界中的多线程多线程基础之走进Java世界中的多线程