zoukankan      html  css  js  c++  java
  • Java的并发和多处理器的并行的理解

    在计算机编程中,有一个基本概念,就是在同一时刻处理多个任务的思想。

    许多程序设计,需要程序能停下正在做的工作,转而处理其他问题,然后返回主进程。

    首先,我们先理清一下并行和并发的关系:

    并行是指,同一时刻处理多个任务,并发是指多个可独立运行的任务,彼此在某一段时间内独立有序运行。

    实现:

    最初,程序员们用所掌握的有关机器底层的知识来编写中断服务程序,主进程的挂起是通过硬件中断来触发的,但难度太大,而且不能移植。中断对于时间性强的任务是必须的,但对于大量的其他问题,我们只是想把问题切分成多个可独立运行的部分(任务),从而提高程序的响应能力。在程序中,这些彼此独立运行的部分称之为线程。

    通常,线程只是一种为单一处理器分配执行时间的手段,但是,如果操作系统支持多处理器,

    那么每一个任务都可以被指派给不同的处理器,并且它们是真正的并行执行(而不是某一时间段内)

    在语言级别上,多线程所带来的便利,便是程序员不用操心机器上是多个处理器还是一个处理器,

    由于程序在逻辑上被分为线程,所以如果机器有多个处理器,那么不需要特殊调整程序就能执行的更快。

    并发的隐患:共享资源

    多个并行任务都要访问同一个资源的时候,为某个任务锁定资源,完成后,释放资源,供其他任务使用。

  • 相关阅读:
    Checking Types Against the Real World in TypeScript
    nexus pip proxy config
    go.rice 强大灵活的golang 静态资源嵌入包
    几个golang 静态资源嵌入包
    rpm 子包创建学习
    Rpm Creating Subpackages
    ava 类似jest snapshot 功能试用
    ava js 测试框架基本试用
    The Architectural Principles Behind Vrbo’s GraphQL Implementation
    graphql-compose graphql schema 生成工具集
  • 原文地址:https://www.cnblogs.com/hoanfir/p/9258921.html
Copyright © 2011-2022 走看看