并发(一) 并发基础

0 篇文章 0 订阅

并发
在学习并发之前,学到的都是有关顺序编程的知识, 即程序中的所有事物在任意时刻都只能执行一个步骤。

  1. 并行编程可以使程序执行速度得到极大提高 并行:“具有可论证的确定性, 但是实际上具有不可确定性”
  2. 不可避免的多线程问题 。 例: java Web 系统是最常用的java应用系统之一,而基本的Web库类。servlet具有天生的多线程性。
  3. java是一种多线程语言 学习并发是面向高级特性的一种飞跃。

并发的多面性
并发编程令人困惑的一个主要原因是: 使用并发时需要解决的问题有多个 ,而实现并发的方式也有很多种。
使用并发解决问题的大体可以分为‘ 速度’ 和 ‘ 设计可管理性’ 两种

  1. 更快的执行。
    如果你想要一个程序运行起来更快 ,那么可以将其断开位多个片段,在单独的处理器上运行每个片段。这听起来很简单。。。
    并发是用于多个处理器编程的基本工具,为了使程序运行更快你必须学会使用这些额外的处理器。
    处理方式
    1.1 在处理器之间分布多个任务 从而极大的提高吞吐量(多处理器web服务器的常见情况)
    1.2 为每个请求分配一个线程 可以将大量用户请求分布到多个cpu上。

但是。并发通常是提高运行在单处理器上的程序的性能。
需要理解并发和并行 。
并发是 多线程但是在同一处理器
并行是 多线程但是在多个处理器

直观的来看 并发似乎确实比顺序编程要开销更大。因为其中多包涵了 所谓上下文切换的代价
但是使得这个问题变得不同的是 ‘阻塞’ 。例如调用 (I/O)
从性能的角度来说 , 如果没有任务会阻塞,那么在单处理器机器上使用并发就没有任何意义了

某些编程语言被设计问可以将并发任务彼此隔离, 这些语言通常被称为函数型语言。

java采取更加传统的方式, 在顺序型语言的基础上提供对线程的支持。

  1. 改进代码的设计
    在单cpu机器上使用多任务的程序在任意时刻仍旧只在执行一项工作, 因此从理论上讲,肯定可以不要任何任务来编写相同的程序,但是,并发提供了一个重要的组织结构的好处;例如仿真

使用协作式线程。

基本的线程机制

并发编程可以让我们将程序划分为多个分离的,独立运行的任务。通过使用多线程机制,这些独立任务中的每一个都将由执行线程来驱动。

定义任务
线程可以驱动任务,因此你需要一种描述任务的方式,这可以由Runnable接口来提供。要定义任务,只需要实现run()方法,使得该任务可以执行你的命令。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值