zoukankan      html  css  js  c++  java
  • 程序、进程、线程和任务之间关系

    原文链接:程序、进程、线程和任务之间关系

    关系总览

    程序(静态)
    简单来说,程序可以描述为任何可执行文件。它包含一组完成特定的操作指令集合。它驻留在内存。它是一个被动的实体,不会因操作系统重新重启而消失。

    进程(动态)
    程序的任何运行实例都称为进程,也可以将其描述为正在执行的程序。一个程序可以有多个进程。进程驻留在主内存中,因此进程会随机器重启而消失。多个进程可以在多处理器系统上并行运行。

    线程
    线程通常被描述为轻量级进程。一个进程可以有多个线程。同一进程中的线程与该进程共享内存。线程和进程之间的本质区别是每个线程用于完成的工作。线程用于小而紧凑的任务,而进程用于更重的任务。

    线程 vs. 进程
    线程和进程之间的一个主要区别是,同一进程中的线程使用相同的地址空间,而不同的进程则不会。这允许线程读写公共共享和数据结构和变量,也增加了线程之间的通信。然而,进程间通信(即IPC)是非常困难的,并且需要耗费大量资源。

    任务(抽象)
    任务与线程非常相似,不同之处在于,它们通常不直接与操作系统交互。与线程池一样,任务不创建自己的OS线程。一个任务内部可能有也可能没有多个线程。

    什么时候用任务?
    任务比创建自己的线程更简单、更有效。

    什么时候用线程?
    你需要比任务提供的更多的控制,直接使用线程更有意义。

    最重要的是,任务几乎总是最好的选择;它提供了一个更强大的API,并且避免了操作系统线程的浪费。在现代代码中显式创建自己的线程的唯一原因是设置每个线程选项,或者维护一个需要维护自己标识的持久线程。

    公众号

  • 相关阅读:
    Java IO: 读取classpath资源
    Java IO: Reader和Writer
    Java IO: 读写zip文件
    OpenFlow运行机制总结
    OpenFlow流表概述
    Java日志系统(学习总结)
    卷积神经网络重要回顾
    Java Servlet学习笔记
    fragment实例
    Fragment应用
  • 原文地址:https://www.cnblogs.com/javaDeveloper/p/12889965.html
Copyright © 2011-2022 走看看