并发:多个运算同时发生。
并发模型:共享内存 消息传递
共享内存:并发模块通过在内存中读写共享对象进行交互
①两个处理器共享物理内存②两个程序共享文件③两个线程(同一个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启动一个线程,它避免了创建类名的类。
原文地址:https://www.cnblogs.com/xgl122/p/9191640.html