美文网首页
关于多线程

关于多线程

作者: InLoneliness | 来源:发表于2020-04-25 14:56 被阅读0次

关于多线程的理解

进程与线程

  • 进程 :是一个正在执行中的程序,每一个进程执行都有一个执行顺序,该顺序是一个执行路径,或者叫一个控制单元;
  • 线程:就是进程中的一个独立控制单元,线程在控制着进程的执行。一个进程中至少有一个进程。
  • 多线程:一个进程中不只有一个线程。

线程的属性、状态、生命周期

多线程的就绪、运行和死亡状态

  • 就绪状态转换为运行状态:当此线程得到处理器资源;
  • 运行状态转换为就绪状态:当此线程主动调用yield()方法或在运行过程中失去处理器资源。
  • 运行状态转换为死亡状态:当此线程线程执行体执行完毕或发生了异常。

Java线程具有五中基本状态

  • 新建状态(New):当线程对象对创建后,即进入了新建状态,如:Thread t = new MyThread();
  • 就绪状态(Runnable):当调用线程对象的start()方法(t.start();),线程即进入就绪状态。处于就绪状态的线程,只是说明此线程已经做好了准备,随时等待CPU调度执行,并不是说执行了t.start()此线程立即就会执行;
  • 运行状态(Running):当CPU开始调度处于就绪状态的线程时,此时线程才得以真正执行,即进入到运行状态。注:就 绪状态是进入到运行状态的唯一入口,也就是说,线程要想进入运行状态执行,首先必须处于就绪状态中;
  • 阻塞状态(Blocked):处于运行状态中的线程由于某种原因,暂时放弃对CPU的使用权,停止执行,此时进入阻塞状态,直到其进入到就绪状态,才 有机会再次被CPU调用以进入到运行状态。
  • 死亡状态(Dead):线程执行完了或者因异常退出了run()方法,该线程结束生命周期。

多线程的优点

  • 多线程从某方面可以等价于多任务,当你有多个任务要处理时,多个任务一起做所消耗的时间肯定比任务串行起来做,所消耗的时间短;
  • 在我们现在的系统中,CPU的运行速度是很快的,其中很大的时间消耗是在等硬盘、IO输入、网络等资源;当多任务时,CPU完全可以在多个任务之间来回切换。使用的花费的时间远远少于所有任务需要消耗的少;
  • 进程之间不能共享数据,线程可以;
  • 系统创建进程需要为该进程重新分配系统资源,创建线程代价比较小。

多线程带来的问题

  1. 线程的生命周期开销非常高
  2. 消耗过多的CPU资源
  3. 降低稳定性

创建线程的方法

  1. 继承Thread类:
  • 定义类继承Thread;
  • 复写Thread类中的run方法;
  • 调用线程的start方法:
  1. 实现Runnable接口
  2. 通过Callable和Future创建线程

线程池的优点

  1. 降低系统资源消耗,通过重用已存在的线程,降低线程创建和销毁造成的消耗;
  2. 提高系统响应速度,当有任务到达时,通过复用已存在的线程,无需等待新线程的创建便能立即执行;
  3. 方便线程并发数的管控;
  4. 提供更强大的功能,延时定时线程池。

关于ThreadLocal

  • threadlocal而是一个线程内部的存储类,可以在指定线程内存储数据,数据存储以后,只有指定线程可以得到存储数据
  • threadLocal提供了线程内存储变量的能力,这些变量不同之处在于每一个线程读取的变量是对应的互相独立的。通过get和set方法就可以得到当前线程对应的值。

相关文章

  • Java 多线程

    1 多线程 1.1 多线程介绍   学习多线程之前,我们先要了解几个关于多线程有关的概念。  进程:进程指正在运行...

  • iOS复习之多线程

    关于iOS多线程,你看我就够了iOS多线程--彻底学会多线程使用dispatch_group来进行线程同步 iOS...

  • 关于多线程的问题及答案三

    关于多线程的问题及答案三关于多线程的问题及答案三 这些多线程的问题,有些来源于各大网站、有些来源于自己的思考。可能...

  • iOS POSIX多线程编程

    关于多线程的介绍、多线程的创建、使用场景和Runloop可以参考《iOS多线程编程指南》。已上传到GitHub仓库...

  • OC-多线程GCD

    参考:GCD源码深入理解 GCDiOS多线程--彻底学会多线程之『GCD』关于iOS多线程,我说,你听,没准你就懂...

  • 关于多线程的理解

    1.关于多线程存在的意义: 首先,既然有多线程,存在既有意义,那么为什么存在多线程呢,多线程的用处在何处呢我的理解...

  • Java 基础 46 多线程

    第1章 多线程概述   学习多线程之前,我们先要了解几个关于多线程有关的概念。 A:进程:进程指正在运行的程序。确...

  • iOS 关于多线程(GCD)

    一、关于iOS多线程的一些简单操作 链接地址:多线程简介 二、iOS开发多线程篇—GCD的常见用法 主要为:延迟执...

  • 多线程详解

    1.1 多线程介绍 学习多线程之前,我们先要了解几个关于多线程有关的概念。 进程:进程指正在运行的程序。确切的来说...

  • Java基础语法_Day22

    一、多线程概述 学习多线程之前,我们先要了解几个关于多线程有关的概念。A:进程:进程指正在运行的程序。确切的来说,...

网友评论

      本文标题:关于多线程

      本文链接:https://www.haomeiwen.com/subject/owhkwhtx.html