1、进程
程序(任务)的执行过程。----动态
持有资源(共享内存,共享文件)和线程---载体
线程
最小的执行单元
同一进程中有多个线程
线程共享进程资源
线程交互:同步、互斥
进程交互:
1、管道:管道是一种半双工的方式,数据只能单向流动,而且只能在具有亲缘关系的进程使用。进程的亲缘关系是指父子关系。
2、有名管道:是一种半双工的方式,允许无亲缘关系的进程间的通信
3、信号量:信号量是一个计数器,可以用来控制多个进程对共享资源的访问,它常作为一种锁机制,防止某个进程正在访问共享内存时,其他进程访问该资源。因此,主要作为进程间以及同以进程内不同线程间的通信方式。
4、消息队列:是由消息的链表,存放在内核中并由消息队列标识符标识,消息队列克服了信号传递消息少,管道智能承载无格式字节流以及缓冲区大小受限等缺点
5、信号:一种比较复杂的通信方式,用于通知接收进程某个事件已发生
6、共享内存:映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问,他往往与其他通信机制,如信号量配合使用,来实现进程间的同步和通信
7、套接字:他用于不同主机间的进程通信
2、线程常用方法--Thread.class和Runnable接口
public void run()
3、正确停止线程方法
使用退出标志:boolean变量 而不是使用stop()方法
interrupt()方法:如果线程在调用
Object
类的 wait()
、wait(long)
或 wait(long, int)
方法,或者该类的join()
、join(long)
、join(long, int)
、sleep(long)
或 sleep(long, int)
方法过程中受阻,则其中断状态将被清除,它还将收到一个 InterruptedException
。
4、多线程的交互
当多个线程同时共享访问同一数据(内存区域)时,每个线程都尝试操作该数据,从而导致数据被破坏(corrupted),这种现象称为争用条件。
互斥:同一时间只能有一个线程对临界资源操作。synchronize
同步:通信机制 wait() notify() notifyAll()