通信方式:
管道:
匿名管道 pipe:具有亲缘关系的父子进程间通信
命名管道 named pipe:均可
信号:软件层次 对中断机制的模拟,通知进程某件事情发生 进程收到信号与处理器
消息队列:
共享内存:多个进程可访问,及时看到对方进程数据的更新,同步操作 信号量 互斥锁
信号量:进程间 线程间
套接字:socket 进程间通信机制,网络不同机器进程通信,同一机器可unix domain socket
帮忙记忆:没有逻辑道理
管道中 信号 携带 信号量 进入了 消息队列 ,在 套接字 的帮助下 得到了 共享内存
开启线程
new Thread();
implements Runnable
callable
stop(); interrupt();
run和start
currentHashMap initTable使用Thread.yield
暂时让出cpu,让单个线程去初始化
调度:
协同式:自己执行完去通知系统切换另一个线程
抢占式: 系统决定是否切换执行时间
Thread.yield让cpu执行时间,没有办法获取执行时间,设置优先级可容易不决定
优先级:java线程映射到系统原生线程上,调度最终取决于操作系统,优先级不能11对应
内核线程实现:1:1 直接映射 多系统调用 上下文切换 线程2000,hotspot
用户线程实现:1:N 语言负责线程生命周期
混合实现:N:M