软件构造 并发1

Posted xgl122

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了软件构造 并发1相关的知识,希望对你有一定的参考价值。

并发:多个运算同时发生。
并发模型:共享内存 消息传递
共享内存:并发模块通过在内存中读写共享对象进行交互

                  ①两个处理器共享物理内存②两个程序共享文件③两个线程(同一个java程序)共享对象

技术分享图片

消息传递:并发模块通过通信通道相互发送消息进行交互。模块发送消息,并将传入的消息发送到每个模块以便处理

                 ①网络中两台计算机通信②web浏览器web server③即时消息的客户端和服务器④通过管道连接两个程序的输入和输出

技术分享图片

 

 
进程 线程两种不同的并发模块
进程:正在运行程序的一个实例,拥有自己私有专用的内存空间
      抽象为虚拟计算机(拥有独立的执行环境和完整的资源)①通常不共享内存,不能访问其他进程的内存或对象,需特殊机制才可实现进程间共享内存
                      (应用程序可能为一组协作进程)    ②进程通信采用的是消息传递方式
线程:正在运行程序的一个执行路径(一个进程可对应多个线程),线程有自己的堆栈和局部变量,但多个线程共享内存空间
      抽象为虚拟处理器(轻量级进程)①线程与进程中的其他线程共享相同的资源(内存,打开文件),线程存在于进程内。
                                                            ②线程采用内存共享机制通信,需特殊处理才能实现消息传递和私有内存

技术分享图片

JAVA提供了并发编程的库函数java.util.concurrent

每个应用程序至少有一个线程。从main线程开始,创建其他的线程
创建线程的两种方法:①创建Thread类
                                    Thread类本身实现了Runnable接口,但是run方法什么都没做,应用程序继承Thread,提供自己的run()实现。
                                    调用Thread.start()启动新线程。

                                     技术分享图片
                                   ②实现Runnable接口,作为参数传递给new Thread()构造函数

                                    

                                    技术分享图片

                                     Runnable接口定义了一个方法run(),包含在线程中执行的代码。Runnable对象被传递给Thread构造函数。调用Thread.start()启动新线程

                                     技术分享图片

惯用法:用一个匿名的Runnable启动一个线程,它避免了创建类名的类。

技术分享图片

 














以上是关于软件构造 并发1的主要内容,如果未能解决你的问题,请参考以下文章

软件构造复习内容(10)---并发

软件构造 并发2

软件构造 并发3(线程安全性)

软件构造 并发3(线程安全性)----锁定和同步

软件构造第十章 线程和分布式系统

软件构造课程提纲