zoukankan      html  css  js  c++  java
  • 并发编程实战(1)—进程、线程

    进程:

      计算机通过加入操作系统来实现多个程序的同时执行:操作系统的出现使得计算机每次能运行多个程序,并且不同的程序都在单独的进程中运行,操作系统为各个独立的进程分配各种资源(如内存、文件句柄等)

    线程:

      促使进程出现的因素同样也促使着线程的出现:

      线程允许在同一个进程中同时存在多个程序控制流,线程会共享进程范围内的资源,但每个线程都有各自的程序计数器、栈、以及局部变量等,同一个程序中的多个线程也可以被同时调度到多个CPU上运行。由于同一个进程中的所有线程都将共享进程的内存地址空间,因此这些线程都能访问相同的变量并在同一堆上分配对象。

      线程也叫轻量级进程,现代操作系统,大多数都是以线程为基本的调度单位,而不是进程。如果没有明确的协同机制,那么线程将彼此独立运行。


    线程带来的问题:

      安全性问题:

        要使多线程程序的行为可以预测,必须对共享变量的访问操作进行协同

      性能问题:

        在多线程程序中,当线程调度器临时挂起活跃线程并转而运行另一个线程时,就会频繁的出现上下文切换操作(Context Switch),这种操作将带来极大的开销:保存和恢复执行上下文,丢失局部性,并且CPU时间将更多的花在线程调度而不是线程运行上

    常见线程问题:

      JVM:在JVM启动时,将为JVM的内部任务(如:垃圾收集、终结操作等)创建后台线程,并创建一个主线程来运行main方法。

      Servlet / JSP:Servlet框架用于部署web应用程序以及分发来自HTTP客户端的请求,每个Servlet都表示一个逻辑组件。在Servlet开发规范中,Servlet需要满足被多个线程同时调用,Servlet需要是线程安全的。

      RMI:RMI是代码能够调用在其他JVM中运行的对象,当通过RMI调用某个远程方法时,传递给方法的参数必须被打包(也称列集)到一个字节流中,通过网络传输给远程JVM,然后由远程JVM拆包(散集)并传递给远程方法。RMI对象也要做好被多个线程同时调用的准备,确保它们自身的线程安全性。

      

  • 相关阅读:
    转的。一个C#的问卷!private、 protected、 public、 internal 修饰符的访问权限
    Windows Phone Mango编程实践——第三方MVVM框架
    Windows Phone Mango编程实践——本地数据库
    Windows Phone Mango开发实践——Shake Library应用实例
    Windows Phone Mango开发实践——示例代码更新和提交(2013.09.12)
    《Windows Phone Mango开发实践》终于出版
    《Windows Phone Mango开发实践》即将问世
    Windows Phone Mango开发实践——应用程序生命周期
    Windows Phone Mango开发实践——性能分析工具
    XNA二维游戏的视差背景实现方法
  • 原文地址:https://www.cnblogs.com/pluto-yang/p/12570836.html
Copyright © 2011-2022 走看看